From 4b44a55f6f2e60230e56f5431120dd3c3e07603f Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 10 Feb 2021 15:46:10 +0100 Subject: Allow a BoundCRS to use a PROJ string transformation Related to https://lists.osgeo.org/pipermail/proj/2021-February/010040.html Given test.wkt with ``` BOUNDCRS[ SOURCECRS[ GEOGCRS["unknown", DATUM["Unknown based on GRS80 ellipsoid", ELLIPSOID["GRS 1980",6378137,298.257222101, LENGTHUNIT["metre",1], ID["EPSG",7019]]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433], ID["EPSG",8901]], CS[ellipsoidal,2], AXIS["longitude",east, ORDER[1], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]], AXIS["latitude",north, ORDER[2], ANGLEUNIT["degree",0.0174532925199433, ID["EPSG",9122]]]]], TARGETCRS[ GEOGCRS["WGS 84", DATUM["World Geodetic System 1984", ELLIPSOID["WGS 84",6378137,298.257223563, LENGTHUNIT["metre",1]]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433]], CS[ellipsoidal,2], AXIS["latitude",north, ORDER[1], ANGLEUNIT["degree",0.0174532925199433]], AXIS["longitude",east, ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4326]]], ABRIDGEDTRANSFORMATION["Transformation from unknown to WGS84", METHOD["PROJ-based operation method: +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=cart +ellps=GRS80 +step +proj=helmert +convention=coordinate_frame +exact +step +inv +proj=cart +ellps=WGS84 +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg"]]] ``` ``projinfo -s @test.wkt -t "WGS 84" -o PROJ -q`` outputs: ``` +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=cart +ellps=GRS80 +step +proj=helmert +convention=coordinate_frame +exact +step +inv +proj=cart +ellps=WGS84 +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg ``` --- src/iso19111/operation/singleoperation.cpp | 12 + src/wkt2_generated_parser.c | 1659 ++++++++++++++-------------- src/wkt2_grammar.y | 6 +- test/unit/test_operation.cpp | 64 ++ 4 files changed, 882 insertions(+), 859 deletions(-) diff --git a/src/iso19111/operation/singleoperation.cpp b/src/iso19111/operation/singleoperation.cpp index 0cd7b57a..b32b61cd 100644 --- a/src/iso19111/operation/singleoperation.cpp +++ b/src/iso19111/operation/singleoperation.cpp @@ -2144,6 +2144,18 @@ bool SingleOperation::exportToPROJStringGeneric( return true; } + const char *prefix = "PROJ-based operation method: "; + if (starts_with(method()->nameStr(), prefix)) { + auto projString = method()->nameStr().substr(strlen(prefix)); + try { + formatter->ingestPROJString(projString); + return true; + } catch (const io::ParsingException &e) { + throw io::FormattingException( + std::string("ingestPROJString() failed: ") + e.what()); + } + } + return false; } diff --git a/src/wkt2_generated_parser.c b/src/wkt2_generated_parser.c index f7bb5798..efecd75d 100644 --- a/src/wkt2_generated_parser.c +++ b/src/wkt2_generated_parser.c @@ -542,16 +542,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 106 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3219 +#define YYLAST 2959 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 164 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 353 +#define YYNNTS 352 /* YYNRULES -- Number of rules. */ -#define YYNRULES 695 +#define YYNRULES 693 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1429 +#define YYNSTATES 1425 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -680,8 +680,8 @@ static const yytype_uint16 yyrline[] = 1515, 1517, 1519, 1521, 1523, 1525, 1527, 1529, 1534, 1538, 1539, 1542, 1547, 1548, 1549, 1550, 1551, 1553, 1558, 1563, 1564, 1567, 1573, 1573, 1573, 1573, 1575, 1576, 1577, 1578, - 1580, 1582, 1587, 1593, 1595, 1600, 1601, 1604, 1610, 1610, - 1612, 1613, 1614, 1615, 1617, 1619 + 1580, 1582, 1587, 1593, 1595, 1600, 1601, 1604, 1612, 1613, + 1614, 1615, 1617, 1619 }; #endif @@ -897,7 +897,6 @@ static const char *const yytname[] = "abridged_coordinate_transformation", "abridged_coordinate_transformation_next", "abridged_coordinate_transformation_end", - "abridged_parameter_or_parameter_file", "opt_end_abridged_coordinate_transformation", "abridged_transformation_keyword", "abridged_transformation_parameter", YY_NULLPTR }; @@ -928,10 +927,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -1232 +#define YYPACT_NINF -1212 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-1232))) + (!!((Yystate) == (-1212))) #define YYTABLE_NINF -634 @@ -942,149 +941,149 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 1574, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, 62, -1232, -1232, - -1232, 98, -1232, -1232, -1232, 98, -1232, -1232, -1232, -1232, - -1232, -1232, 98, 98, -1232, 98, -1232, -87, 98, -1232, - 98, -1232, 98, -1232, -1232, -1232, 98, -1232, 98, -1232, - 98, -1232, 98, -1232, 98, -1232, 98, -1232, 98, -1232, - 98, -1232, -1232, -1232, -1232, -1232, -1232, -1232, 98, -1232, - -1232, -1232, -1232, -1232, -1232, 98, -1232, 98, -1232, 98, - -1232, 98, -1232, 98, -1232, 98, -1232, -1232, -1232, -24, - -24, -24, -24, -24, -1232, 83, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24, -24, -24, 810, - -24, -24, -24, 113, -1232, -1232, -87, -1232, -87, -1232, - -87, -87, -1232, -87, -1232, -1232, -1232, 98, -1232, -87, - -87, -1232, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -1232, -87, -1232, -87, -1232, -1232, -1232, -1232, 26, - -1232, -1232, -1232, -1232, -1232, 37, 52, 179, -1232, -1232, - -1232, -1232, 360, -1232, -87, -1232, -87, -87, -87, -1232, - -87, 98, 1048, 212, 59, 59, 761, -24, 256, 138, - 156, 467, 304, 360, 203, 360, 322, 360, 217, 314, - 360, 275, 1439, -1232, -1232, -1232, 483, 69, -1232, -1232, - 69, -1232, -1232, 69, -1232, -1232, 335, 810, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, 462, -1232, -1232, -1232, -1232, - 252, 265, 287, 761, -1232, -87, -1232, -87, 98, -1232, - -1232, -1232, -1232, 98, -87, 98, -87, -1232, 98, 98, - -87, -87, -1232, -1232, -1232, -1232, -87, -87, -87, -87, - -1232, -87, -1232, -87, -87, -87, -1232, -1232, -1232, -1232, - 98, 98, -1232, -1232, -87, 98, -1232, -1232, 98, -87, - -87, -1232, -87, -1232, -1232, 98, -1232, -87, -87, 98, - -1232, -1232, -87, -87, 98, -1232, -1232, -87, -87, 98, - -1232, -1232, -87, -87, 98, -1232, -1232, -87, -87, 98, - -87, 98, -1232, -1232, -87, 98, -1232, -87, -1232, -1232, - -1232, -1232, 98, -1232, -87, 98, -87, -87, -87, -87, - -87, -1232, -87, 98, 360, -1232, 416, 462, -1232, -1232, - 558, 360, 75, 360, 360, -24, -24, 78, 390, 102, - -24, -24, 413, 413, 78, 102, 413, 413, 761, 416, - 360, 466, -24, -24, 364, 360, -24, -24, 89, 477, - 413, -24, 488, -1232, 488, -24, 477, 413, -24, 477, - 413, -24, 477, 413, -24, -1232, -1232, 387, 104, -1232, - -24, 413, -24, 1439, 462, 113, -1232, -24, 335, 113, - -1232, 499, 113, -1232, 335, 461, 810, -1232, 462, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -87, -87, 98, - -1232, 98, -1232, -1232, -87, -87, 98, -87, -1232, -1232, - -1232, -87, -87, -87, -1232, -87, 98, -1232, -1232, -1232, - -1232, -1232, -1232, 98, 360, -87, -1232, -87, -87, -1232, - -87, 98, -87, -87, 360, -87, -87, -1232, -87, -87, - 761, 360, -1232, -87, -87, -87, -1232, -87, -87, 98, - -1232, -1232, -87, -87, -87, 98, 360, -87, -87, -87, - -87, -1232, 360, 360, -87, -87, 360, -87, -87, 360, - -87, -87, -1232, -1232, 159, -1232, 360, -87, -1232, 360, - -87, -87, -87, 287, 360, -1232, 360, -87, -1232, -87, - 98, -87, -1232, -87, 98, 360, -1232, 481, 486, -24, - -24, -1232, -1232, 488, -1232, 823, 479, 488, 360, 212, - 102, 517, 360, 462, 1699, -1232, 477, 112, 112, 477, - -24, 477, 102, -1232, 477, 477, 329, 360, 306, -1232, - -1232, -1232, 477, 112, 112, -1232, -1232, -24, 360, 212, - 477, 940, -1232, 477, 243, -1232, -1232, -1232, -1232, 477, - 108, -1232, 477, 192, -1232, 477, 25, -1232, -1232, 462, - -1232, -1232, 462, -1232, -1232, -1232, 477, 138, 1409, 360, - 462, -1232, -1232, 499, 1212, 360, -24, 498, 1047, 360, - -24, -1232, -87, -1232, -1232, 360, -1232, 360, -1232, -87, - -1232, 360, -87, -1232, -87, -1232, -87, 360, -1232, -1232, - -1232, 98, -1232, 287, 360, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -87, -1232, -1232, -1232, -1232, -87, - -87, -87, -1232, -87, -87, -87, -87, 360, -1232, -87, - 360, 360, 360, 360, -1232, -1232, -87, -87, 98, -1232, - -1232, -1232, -87, 98, 360, -87, -87, -87, -87, -1232, - -87, -1232, -87, 360, -87, 360, -87, -87, 360, -87, - 360, -87, 360, -87, 205, 427, -1232, 497, 360, -1232, - -1232, -1232, -1232, -87, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -87, 98, -87, 98, -1232, - -87, 98, -87, 98, -87, 98, -87, 98, -87, -1232, - 98, -87, -1232, -1232, -87, -1232, -1232, -1232, 98, -87, - -87, 98, -87, 98, -1232, -1232, -87, -1232, 98, -1232, - -1232, -87, 486, -1232, -1232, -1232, -1232, -1232, -1232, 117, - -1232, -24, 462, -1232, 398, 398, 398, 398, 78, 100, - 360, 78, 360, -1232, 499, -1232, -1232, -1232, -1232, -1232, - -1232, -24, -1232, -24, -1232, 78, 58, 360, 78, 360, - 416, 518, -1232, 398, -1232, 89, 360, -1232, 360, -1232, - 360, -1232, 360, -1232, 462, -1232, -1232, 462, 462, -1232, - 430, -1232, -1232, -1232, -1232, 466, 176, 566, 530, -1232, - -24, 547, -1232, -24, 425, -1232, 823, 281, -1232, 823, - 333, -1232, 387, -1232, 469, -1232, 1134, 360, -24, -1232, - -1232, -24, -1232, 823, 488, 360, 267, 47, -1232, -1232, - -1232, -87, -1232, -87, -1232, -1232, -1232, -1232, -87, -87, - -87, -87, -87, -87, -87, -1232, -87, -1232, -87, -1232, - -87, -87, -87, -87, -1232, -87, -87, -1232, -87, -1232, - -1232, -87, -87, -87, -87, -1232, -1232, -1232, -1232, -1232, - 465, 430, -1232, 497, 462, -1232, -87, -1232, -87, -1232, - -87, -1232, -87, -1232, -1232, 360, -87, -87, -87, -1232, - 360, -87, -87, -1232, -87, -87, -1232, -87, -1232, -1232, - -87, -1232, 360, -1232, -1232, -87, -87, -87, 98, -87, - -1232, -87, -87, 360, -1232, -1232, -1232, -1232, -1232, -1232, - 360, -87, -87, 360, 360, 360, 360, 360, 360, -1232, - -1232, 360, 103, 360, 761, 761, 360, -1232, 306, -1232, - -1232, 360, 746, 360, 360, 360, -1232, -1232, 462, -1232, - -1232, -1232, 360, -1232, 338, -1232, -1232, 425, -1232, 281, - -1232, -1232, -1232, 281, -1232, -1232, 823, -1232, 823, 387, - -1232, -1232, -1232, 1054, -1232, 810, -1232, 416, -24, -1232, - -87, 168, 499, -1232, -1232, -87, -87, -87, -87, -1232, - -1232, -87, -87, -87, -1232, -1232, -87, -87, -1232, -87, - -1232, -1232, -1232, -1232, -1232, -87, -1232, 98, -87, -1232, - -87, -1232, -1232, -1232, 681, -1232, 360, -87, -87, -87, - -1232, -87, -87, -87, -87, -1232, -87, -1232, -87, -1232, - -1232, 360, -87, 360, -87, -1232, -87, 498, 98, -1232, - -87, -1232, 623, 623, 623, 623, -1232, -1232, -1232, 360, - 360, -1232, -1232, -24, -1232, 623, 811, -1232, -1232, 199, - 535, 579, 281, -1232, -1232, -1232, -1232, 823, 372, 360, - -1232, -1232, -1232, 297, 360, 98, -24, 1415, 360, -1232, - -87, 98, -87, 98, -87, -87, 98, -1232, -1232, -87, - -87, 370, 811, -1232, -87, -87, -1232, -87, -1232, -1232, - -87, -1232, -87, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -87, -1232, 98, -1232, 267, -87, -1232, -87, -87, - -1232, 1348, -1232, -24, 1001, -1232, -24, -1232, 711, -1232, - -24, 761, 1104, -1232, -1232, 535, 579, 579, -1232, 823, - 360, -24, 360, 416, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, 98, -1232, 98, - -87, -1232, -87, -1232, -87, -87, -87, -1232, -87, -87, - -87, -1232, -1232, -87, -87, 98, -87, -1232, -1232, -1232, - -1232, 360, -1232, -87, -87, -87, -24, -24, 1047, 2503, - -1232, -1232, 2115, -1232, 2716, 360, 1527, -1232, -1232, -24, - 579, -1232, 761, 360, 1340, 360, 360, -87, -87, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, -1232, -87, -87, -87, -87, - -87, 360, -1232, -87, -87, -87, -87, -87, 360, -1232, - -87, -1232, -87, -1232, -87, -1232, -87, -1232, -1232, -87, - 98, -1232, -1232, 761, 360, 272, 360, 679, 679, 710, - 710, -1232, 870, 412, 679, 494, 494, -1232, 336, -1232, - 360, -1232, -1232, 267, -87, -1232, -1232, -87, -87, -1232, - -87, 98, -1232, -1232, -87, -87, -1232, -87, 98, -87, - -1232, -1232, -87, -87, -1232, -87, 98, -87, -1232, -87, - -87, -1232, -87, -87, -1232, -87, -87, -1232, -87, -1232, - -87, -87, -1232, -87, -1232, -87, -1232, 360, 360, -1232, - -1232, 74, -1232, 462, -1232, -1232, 870, -1232, 823, 475, - -1232, -1232, -1232, 870, -1232, 823, 475, -1232, -1232, -1232, - 475, -1232, -1232, 336, -1232, -1232, -1232, 336, -1232, -1232, - -1232, -1232, -87, -1232, -87, 360, -87, -87, -87, -87, - -87, -87, 360, -87, -87, -87, -87, -1232, -1232, -1232, - -1232, 475, -1232, 438, -1232, -1232, 475, -1232, -1232, -1232, - -1232, -1232, -1232, -87, 360, -87, -1232, -1232, -1232 + 1339, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, 94, -1212, -1212, + -1212, -106, -1212, -1212, -1212, -106, -1212, -1212, -1212, -1212, + -1212, -1212, -106, -106, -1212, -106, -1212, -14, -106, -1212, + -106, -1212, -106, -1212, -1212, -1212, -106, -1212, -106, -1212, + -106, -1212, -106, -1212, -106, -1212, -106, -1212, -106, -1212, + -106, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -106, -1212, + -1212, -1212, -1212, -1212, -1212, -106, -1212, -106, -1212, -106, + -1212, -106, -1212, -106, -1212, -106, -1212, -1212, -1212, -35, + -35, -35, -35, -35, -1212, 55, -35, -35, -35, -35, + -35, -35, -35, -35, -35, -35, -35, -35, -35, 1609, + -35, -35, -35, 121, -1212, -1212, -14, -1212, -14, -1212, + -14, -14, -1212, -14, -1212, -1212, -1212, -106, -1212, -14, + -14, -1212, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -1212, -14, -1212, -14, -1212, -1212, -1212, -1212, 9, + -1212, -1212, -1212, -1212, -1212, 16, 29, 75, -1212, -1212, + -1212, -1212, 439, -1212, -14, -1212, -14, -14, -14, -1212, + -14, -106, 1370, 193, 122, 122, 781, -35, 137, 364, + 150, 519, 428, 439, 358, 439, 287, 439, 85, 241, + 439, 235, 1635, -1212, -1212, -1212, 191, 99, -1212, -1212, + 99, -1212, -1212, 99, -1212, -1212, 285, 1609, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, 491, -1212, -1212, -1212, -1212, + 202, 219, 275, 781, -1212, -14, -1212, -14, -106, -1212, + -1212, -1212, -1212, -106, -14, -106, -14, -1212, -106, -106, + -14, -14, -1212, -1212, -1212, -1212, -14, -14, -14, -14, + -1212, -14, -1212, -14, -14, -14, -1212, -1212, -1212, -1212, + -106, -106, -1212, -1212, -14, -106, -1212, -1212, -106, -14, + -14, -1212, -14, -1212, -1212, -106, -1212, -14, -14, -106, + -1212, -1212, -14, -14, -106, -1212, -1212, -14, -14, -106, + -1212, -1212, -14, -14, -106, -1212, -1212, -14, -14, -106, + -14, -106, -1212, -1212, -14, -106, -1212, -14, -1212, -1212, + -1212, -1212, -106, -1212, -14, -106, -14, -14, -14, -14, + -14, -1212, -14, -106, 439, -1212, 371, 491, -1212, -1212, + 163, 439, 283, 439, 439, -35, -35, 56, 357, 258, + -35, -35, 408, 408, 56, 258, 408, 408, 781, 371, + 439, 457, -35, -35, 316, 439, -35, -35, 82, 447, + 408, -35, 476, -1212, 476, -35, 447, 408, -35, 447, + 408, -35, 447, 408, -35, -1212, -1212, 586, 256, -1212, + -35, 408, -35, 1635, 491, 121, -1212, -35, 285, 121, + -1212, 504, 121, -1212, 285, 495, 1609, -1212, 491, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -14, -14, -106, + -1212, -106, -1212, -1212, -14, -14, -106, -14, -1212, -1212, + -1212, -14, -14, -14, -1212, -14, -106, -1212, -1212, -1212, + -1212, -1212, -1212, -106, 439, -14, -1212, -14, -14, -1212, + -14, -106, -14, -14, 439, -14, -14, -1212, -14, -14, + 781, 439, -1212, -14, -14, -14, -1212, -14, -14, -106, + -1212, -1212, -14, -14, -14, -106, 439, -14, -14, -14, + -14, -1212, 439, 439, -14, -14, 439, -14, -14, 439, + -14, -14, -1212, -1212, 182, -1212, 439, -14, -1212, 439, + -14, -14, -14, 275, 439, -1212, 439, -14, -1212, -14, + -106, -14, -1212, -14, -106, 439, -1212, 500, 518, -35, + -35, -1212, -1212, 476, -1212, 1081, 502, 476, 439, 193, + 258, 545, 439, 491, 1651, -1212, 447, 107, 107, 447, + -35, 447, 258, -1212, 447, 447, 435, 439, 475, -1212, + -1212, -1212, 447, 107, 107, -1212, -1212, -35, 439, 193, + 447, 1611, -1212, 447, 393, -1212, -1212, -1212, -1212, 447, + 197, -1212, 447, 299, -1212, 447, 95, -1212, -1212, 491, + -1212, -1212, 491, -1212, -1212, -1212, 447, 364, 1549, 439, + 491, -1212, -1212, 504, 1148, 439, -35, 526, 1416, 439, + -35, -1212, -14, -1212, -1212, 439, -1212, 439, -1212, -14, + -1212, 439, -14, -1212, -14, -1212, -14, 439, -1212, -1212, + -1212, -106, -1212, 275, 439, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -14, -1212, -1212, -1212, -1212, -14, + -14, -14, -1212, -14, -14, -14, -14, 439, -1212, -14, + 439, 439, 439, 439, -1212, -1212, -14, -14, -106, -1212, + -1212, -1212, -14, -106, 439, -14, -14, -14, -14, -1212, + -14, -1212, -14, 439, -14, 439, -14, -14, 439, -14, + 439, -14, 439, -14, 406, 425, -1212, 725, 439, -1212, + -1212, -1212, -1212, -14, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -14, -106, -14, -106, -1212, + -14, -106, -14, -106, -14, -106, -14, -106, -14, -1212, + -106, -14, -1212, -1212, -14, -1212, -1212, -1212, -106, -14, + -14, -106, -14, -106, -1212, -1212, -14, -1212, -106, -1212, + -1212, -14, 518, -1212, -1212, -1212, -1212, -1212, -1212, 290, + -1212, -35, 491, -1212, 503, 503, 503, 503, 56, 139, + 439, 56, 439, -1212, 504, -1212, -1212, -1212, -1212, -1212, + -1212, -35, -1212, -35, -1212, 56, 148, 439, 56, 439, + 371, 555, -1212, 503, -1212, 82, 439, -1212, 439, -1212, + 439, -1212, 439, -1212, 491, -1212, -1212, 491, 491, -1212, + 429, -1212, -1212, -1212, -1212, 457, 242, 566, 662, -1212, + -35, 900, -1212, -35, 131, -1212, 1081, 303, -1212, 1081, + 452, -1212, 586, -1212, 462, -1212, 984, 439, -35, -1212, + -1212, -35, -1212, 1081, 476, 439, 265, 98, -1212, -1212, + -1212, -14, -1212, -14, -1212, -1212, -1212, -1212, -14, -14, + -14, -14, -14, -14, -14, -1212, -14, -1212, -14, -1212, + -14, -14, -14, -14, -1212, -14, -14, -1212, -14, -1212, + -1212, -14, -14, -14, -14, -1212, -1212, -1212, -1212, -1212, + 456, 429, -1212, 725, 491, -1212, -14, -1212, -14, -1212, + -14, -1212, -14, -1212, -1212, 439, -14, -14, -14, -1212, + 439, -14, -14, -1212, -14, -14, -1212, -14, -1212, -1212, + -14, -1212, 439, -1212, -1212, -14, -14, -14, -106, -14, + -1212, -14, -14, 439, -1212, -1212, -1212, -1212, -1212, -1212, + 439, -14, -14, 439, 439, 439, 439, 439, 439, -1212, + -1212, 439, 310, 439, 781, 781, 439, -1212, 475, -1212, + -1212, 439, 1029, 439, 439, 439, -1212, -1212, 491, -1212, + -1212, -1212, 439, -1212, 405, -1212, -1212, 131, -1212, 303, + -1212, -1212, -1212, 303, -1212, -1212, 1081, -1212, 1081, 586, + -1212, -1212, -1212, 1298, -1212, 1609, -1212, 371, -35, -1212, + -14, 1383, 439, 504, -1212, -1212, -14, -14, -14, -14, + -1212, -1212, -14, -14, -14, -1212, -1212, -14, -14, -1212, + -14, -1212, -1212, -1212, -1212, -1212, -14, -1212, -106, -14, + -1212, -14, -1212, -1212, -1212, 1041, -1212, 439, -14, -14, + -14, -1212, -14, -14, -14, -14, -1212, -14, -1212, -14, + -1212, -1212, 439, -14, 439, -14, -1212, -14, 526, -1212, + -106, -14, -14, -1212, 618, 618, 618, 618, -1212, -1212, + -1212, 439, 439, -1212, -1212, -35, -1212, 618, 877, -1212, + -1212, 255, 577, 580, 303, -1212, -1212, -1212, -1212, 1081, + 388, 439, -1212, -1212, -1212, 546, 439, -106, -35, -1212, + -1212, -1212, -14, -106, -14, -106, -14, -14, -106, -1212, + -1212, -14, -14, 550, 877, -1212, -14, -14, -1212, -14, + -1212, -1212, -14, -1212, -14, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -14, -1212, -106, -1212, 265, -14, 1292, + -1212, -35, 688, -1212, -35, -1212, 836, -1212, -35, 781, + 1086, -1212, -1212, 577, 580, 580, -1212, 1081, 439, -35, + 439, 371, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -106, -1212, -106, -14, -1212, -14, -1212, + -14, -14, -14, -1212, -14, -14, -14, -1212, -1212, -14, + -14, -106, -14, -1212, -1212, -1212, -1212, 439, -1212, -14, + -14, -14, -35, -35, 1416, 1982, -1212, -1212, 1658, -1212, + 2505, 439, 1448, -1212, -1212, -35, 580, -1212, 781, 439, + 893, 439, 439, -14, -14, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -14, -14, -14, -14, -14, 439, -1212, -14, + -14, -14, -14, -14, 439, -1212, -14, -1212, -14, -1212, + -14, -1212, -14, -1212, -1212, -14, -106, -1212, -1212, 781, + 439, 92, 439, 894, 894, 737, 737, -1212, 351, 485, + 894, 569, 569, -1212, 333, -1212, 439, -1212, -1212, 265, + -14, -1212, -1212, -14, -14, -1212, -14, -106, -1212, -1212, + -14, -14, -1212, -14, -106, -14, -1212, -1212, -14, -14, + -1212, -14, -106, -14, -1212, -14, -14, -1212, -14, -14, + -1212, -14, -14, -1212, -14, -1212, -14, -14, -1212, -14, + -1212, -14, -1212, 439, 439, -1212, -1212, 111, -1212, 491, + -1212, -1212, 351, -1212, 1081, 571, -1212, -1212, -1212, 351, + -1212, 1081, 571, -1212, -1212, -1212, 571, -1212, -1212, 333, + -1212, -1212, -1212, 333, -1212, -1212, -1212, -1212, -14, -1212, + -14, 439, -14, -14, -14, -14, -14, -14, 439, -14, + -14, -14, -14, -1212, -1212, -1212, -1212, 571, -1212, 565, + -1212, -1212, 571, -1212, -1212, -1212, -1212, -1212, -1212, -14, + 439, -14, -1212, -1212, -1212 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1144,7 +1143,7 @@ static const yytype_uint16 yydefact[] = 190, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 512, 48, 513, 0, 190, 516, 0, 0, 0, 598, 606, 0, 649, 0, 0, 525, 662, - 0, 0, 694, 80, 0, 0, 32, 0, 0, 0, + 0, 0, 692, 80, 0, 0, 32, 0, 0, 0, 0, 350, 355, 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, 415, @@ -1186,96 +1185,96 @@ static const yytype_uint16 yydefact[] = 0, 85, 85, 137, 0, 85, 145, 0, 149, 150, 0, 79, 0, 655, 644, 638, 638, 80, 0, 80, 637, 0, 0, 0, 379, 524, 674, 675, 672, 673, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, + 0, 688, 0, 0, 0, 0, 0, 0, 0, 555, 554, 0, 0, 0, 0, 0, 0, 442, 0, 439, 441, 0, 0, 0, 0, 0, 47, 69, 0, 54, 57, 72, 0, 95, 0, 86, 99, 0, 121, 0, 122, 123, 132, 0, 124, 125, 0, 126, 0, 0, 173, 639, 640, 0, 641, 0, 643, 27, 0, 656, - 0, 0, 0, 685, 377, 0, 0, 0, 0, 556, - 558, 190, 518, 518, 517, 203, 190, 190, 443, 190, - 445, 188, 186, 185, 187, 190, 467, 0, 190, 460, - 0, 572, 64, 56, 0, 562, 0, 102, 103, 104, - 105, 85, 85, 85, 85, 138, 0, 146, 142, 151, - 152, 0, 80, 0, 0, 538, 378, 0, 0, 689, - 690, 688, 0, 0, 0, 0, 521, 519, 520, 0, - 0, 440, 462, 0, 463, 0, 0, 63, 97, 0, - 0, 0, 0, 127, 128, 129, 130, 0, 0, 0, - 147, 642, 654, 0, 0, 0, 0, 0, 0, 243, - 214, 0, 209, 0, 80, 220, 0, 192, 189, 0, - 475, 65, 0, 61, 106, 107, 108, 109, 110, 111, - 85, 139, 0, 143, 141, 535, 530, 531, 532, 533, - 534, 378, 528, 0, 536, 0, 0, 693, 690, 690, - 687, 0, 213, 0, 0, 208, 0, 218, 0, 219, - 0, 0, 0, 474, 62, 0, 0, 0, 131, 0, - 0, 0, 0, 27, 692, 691, 183, 180, 179, 182, - 200, 181, 201, 217, 345, 175, 177, 0, 176, 0, - 215, 244, 0, 212, 209, 80, 0, 222, 220, 0, - 190, 481, 479, 80, 80, 0, 112, 113, 114, 115, - 140, 0, 527, 194, 676, 190, 0, 0, 0, 0, - 211, 210, 0, 221, 0, 0, 0, 476, 478, 0, - 0, 135, 0, 0, 0, 0, 0, 0, 194, 216, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 297, 246, 248, 250, - 252, 0, 245, 270, 277, 279, 281, 283, 0, 276, - 293, 184, 80, 482, 378, 116, 190, 529, 679, 80, - 0, 671, 695, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 0, 0, 0, 242, 0, 477, - 0, 195, 678, 0, 190, 193, 344, 190, 190, 298, - 190, 0, 241, 340, 190, 190, 247, 190, 0, 190, - 249, 342, 190, 190, 251, 190, 0, 190, 253, 190, - 190, 271, 190, 190, 278, 190, 190, 280, 190, 282, - 190, 190, 284, 190, 294, 190, 480, 0, 0, 299, - 302, 0, 300, 0, 254, 261, 0, 258, 0, 0, - 260, 262, 269, 0, 266, 0, 0, 268, 272, 275, - 0, 273, 285, 0, 287, 288, 289, 0, 291, 292, - 295, 296, 676, 178, 190, 0, 190, 190, 0, 190, - 190, 190, 0, 190, 190, 190, 190, 677, 301, 343, - 257, 0, 255, 0, 259, 265, 0, 263, 341, 267, - 274, 286, 290, 190, 0, 190, 256, 339, 264 + 0, 0, 0, 0, 685, 377, 0, 0, 0, 0, + 556, 558, 190, 518, 518, 517, 203, 190, 190, 443, + 190, 445, 188, 186, 185, 187, 190, 467, 0, 190, + 460, 0, 572, 64, 56, 0, 562, 0, 102, 103, + 104, 105, 85, 85, 85, 85, 138, 0, 146, 142, + 151, 152, 0, 80, 0, 0, 538, 378, 0, 691, + 0, 688, 688, 687, 0, 0, 0, 0, 521, 519, + 520, 0, 0, 440, 462, 0, 463, 0, 0, 63, + 97, 0, 0, 0, 0, 127, 128, 129, 130, 0, + 0, 0, 147, 642, 654, 0, 0, 0, 0, 690, + 689, 243, 214, 0, 209, 0, 80, 220, 0, 192, + 189, 0, 475, 65, 0, 61, 106, 107, 108, 109, + 110, 111, 85, 139, 0, 143, 141, 535, 530, 531, + 532, 533, 534, 378, 528, 0, 536, 0, 0, 0, + 213, 0, 0, 208, 0, 218, 0, 219, 0, 0, + 0, 474, 62, 0, 0, 0, 131, 0, 0, 0, + 0, 27, 183, 180, 179, 182, 200, 181, 201, 217, + 345, 175, 177, 0, 176, 0, 215, 244, 0, 212, + 209, 80, 0, 222, 220, 0, 190, 481, 479, 80, + 80, 0, 112, 113, 114, 115, 140, 0, 527, 194, + 676, 190, 0, 0, 0, 0, 211, 210, 0, 221, + 0, 0, 0, 476, 478, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 194, 216, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 297, 246, 248, 250, 252, 0, 245, 270, + 277, 279, 281, 283, 0, 276, 293, 184, 80, 482, + 378, 116, 190, 529, 679, 80, 0, 671, 693, 0, + 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, + 0, 0, 0, 242, 0, 477, 0, 195, 678, 0, + 190, 193, 344, 190, 190, 298, 190, 0, 241, 340, + 190, 190, 247, 190, 0, 190, 249, 342, 190, 190, + 251, 190, 0, 190, 253, 190, 190, 271, 190, 190, + 278, 190, 190, 280, 190, 282, 190, 190, 284, 190, + 294, 190, 480, 0, 0, 299, 302, 0, 300, 0, + 254, 261, 0, 258, 0, 0, 260, 262, 269, 0, + 266, 0, 0, 268, 272, 275, 0, 273, 285, 0, + 287, 288, 289, 0, 291, 292, 295, 296, 676, 178, + 190, 0, 190, 190, 0, 190, 190, 190, 0, 190, + 190, 190, 190, 677, 301, 343, 257, 0, 255, 0, + 259, 265, 0, 263, 341, 267, 274, 286, 290, 190, + 0, 190, 256, 339, 264 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1232, -1232, -1232, -221, -226, -189, -1232, 266, -194, 293, - -1232, -1232, -1232, -1232, -1232, -1232, -196, -341, -654, -53, - -782, -642, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -563, - -250, -1232, -1232, -1232, -847, -1232, -1232, -237, 1251, 1249, - -57, 1948, -1232, -665, -567, -574, -1232, -1232, -157, -1232, - -1232, -156, -1232, -1232, -1232, -154, -306, -1232, -1232, -791, - -1232, -1232, -1232, -1232, -1232, -783, -1232, -1232, -1232, -1232, - -657, -1232, -1232, -1232, 110, -1232, -1232, -1232, -1232, -1232, - 143, -1232, -1232, -505, -1232, -1232, -473, -1232, -1232, -1231, - -1232, -1232, -1232, -1232, -557, 1794, -410, -1201, -544, -1232, - -1232, -1232, -748, -930, -37, -1232, -497, -1232, -1232, -1232, - -1232, -500, -334, 124, -1232, -1232, -290, -1018, -364, -446, - -1004, -578, -1232, -852, -597, -1232, -1232, -1232, -1232, -602, - -1232, -1232, -1232, -1232, -729, -588, -1232, -701, -1232, -556, - -1232, -724, -1232, 716, -416, -148, 519, -419, 36, -102, - -326, 101, -1232, -1232, -1232, 188, -1232, -117, -1232, -67, - -1232, -1232, -1232, -1232, -1232, -1232, -836, -1232, -1232, -1232, - -1232, 600, 604, 605, 607, -280, 663, -1232, -1232, -91, - 42, -1232, -1232, -1232, -1232, -1232, -107, -1232, -1232, -1232, - -1232, 10, -1232, 506, -105, -1232, -1232, -1232, 609, -1232, - -1232, -1232, -644, -1232, -1232, -1232, 546, 552, 527, -204, - 4, 277, -1232, -1232, -1232, -1232, -1232, -1232, -1232, -367, - -794, -938, -1232, -1232, 627, 633, -1232, 197, -1232, -448, - -1232, -1232, -1232, -192, -1232, 640, -1232, -185, -1232, 641, - -1232, -186, -1232, 644, -1232, -187, -1232, -1232, 378, -1232, - -1232, -1232, -1232, -1232, 540, -406, -1232, -1232, -384, -1232, - -1232, -781, -1232, -1232, -1232, -796, -1232, -1232, 648, -1232, - -1232, 588, -1232, 590, -1232, -1232, 190, -624, 193, 194, - 195, 660, -1232, -1232, -1232, -1232, -1232, 671, -1232, -1232, - -1232, -1232, 672, -1232, -1232, 673, -1232, -1232, 674, -1232, - -1232, 675, -179, -349, 76, -1232, -1232, -1232, -1232, -1232, - -1232, -1232, -1232, -1232, -1232, 806, -1232, 478, -253, -1232, - -119, -209, -1232, -1232, -109, -1232, 81, -1232, -1232, -1232, - -814, -1232, -1232, -1232, 489, -64, 816, -1232, -1232, 484, - -1087, -552, -1232, -1001, 842, -1232, -1232, -1232, -96, -1232, - -458, -1232, -249 + -1212, -1212, -1212, -222, -223, -191, -1212, 272, -194, 311, + -1212, -1212, -1212, -1212, -1212, -1212, -196, -325, -656, -50, + -728, -646, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -567, + -230, -1212, -1212, -1212, -871, -1212, -1212, -218, 1195, 1389, + -57, -54, -1212, -704, -480, -392, -1212, -1212, -148, -1212, + -1212, -141, -1212, -1212, -1212, -134, -254, -1212, -1212, -803, + -1212, -1212, -1212, -1212, -1212, -788, -1212, -1212, -1212, -1212, + -251, -1212, -1212, -1212, 248, -1212, -1212, -1212, -1212, -1212, + 194, -1212, -1212, -500, -1212, -1212, -708, -1212, -1212, -401, + -1212, -1212, -1212, -1212, -550, 1538, -368, -1211, -499, -1212, + -1212, -1212, -769, -915, -51, -1212, -449, -1212, -1212, -1212, + -1212, -448, -342, 164, -1212, -1212, -118, -995, -321, -400, + -976, -674, -1212, -913, -549, -1212, -1212, -1212, -1212, -551, + -1212, -1212, -1212, -1212, -660, -547, -1212, -621, -1212, -755, + -1212, -651, -1212, 755, -419, -197, 561, -421, 30, 5, + -320, 132, -1212, -1212, -1212, 227, -1212, -79, -1212, -80, + -1212, -1212, -1212, -1212, -1212, -1212, -833, -1212, -1212, -1212, + -1212, 636, 638, 639, 641, -280, 1033, -1212, -1212, -75, + 31, -1212, -1212, -1212, -1212, -1212, -108, -1212, -1212, -1212, + -1212, 3, -1212, 413, -69, -1212, -1212, -1212, 646, -1212, + -1212, -1212, -636, -1212, -1212, -1212, 581, 583, 136, -182, + 4, 301, -1212, -1212, -1212, -1212, -1212, -1212, -1212, -364, + -814, -922, -1212, -1212, 654, 657, -1212, 220, -1212, -420, + -1212, -1212, -1212, -185, -1212, 671, -1212, -161, -1212, 672, + -1212, -189, -1212, 678, -1212, -173, -1212, -1212, 410, -1212, + -1212, -1212, -1212, -1212, 436, -327, -1212, -1212, -377, -1212, + -1212, -790, -1212, -1212, -1212, -786, -1212, -1212, 681, -1212, + -1212, 622, -1212, 625, -1212, -1212, 225, -609, 230, 231, + 237, 706, -1212, -1212, -1212, -1212, -1212, 709, -1212, -1212, + -1212, -1212, 711, -1212, -1212, 713, -1212, -1212, 718, -1212, + -1212, 719, -183, -351, 130, -1212, -1212, -1212, -1212, -1212, + -1212, -1212, -1212, -1212, -1212, 864, -1212, 537, -235, -1212, + -120, -214, -1212, -1212, -88, -1212, 104, -1212, -1212, -1212, + -813, -1212, -1212, -1212, 549, -36, 887, -1212, -1212, 557, + -1111, -488, -1212, -1007, 888, -1212, -1212, -1212, -34, -353, + -1212, -1212 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1284,18 +1283,18 @@ static const yytype_int16 yydefgoto[] = -1, 37, 38, 39, 235, 620, 237, 880, 238, 470, 239, 240, 419, 420, 241, 348, 242, 243, 894, 589, 503, 590, 504, 695, 890, 591, 809, 969, 592, 810, - 893, 1033, 1034, 1112, 811, 812, 813, 895, 109, 215, + 893, 1034, 1035, 1114, 811, 812, 813, 895, 109, 215, 382, 456, 922, 609, 749, 819, 712, 713, 714, 715, - 716, 717, 718, 905, 1036, 719, 720, 721, 910, 722, - 723, 914, 1046, 1122, 1201, 724, 1089, 725, 917, 1048, - 726, 727, 920, 1051, 489, 351, 41, 136, 245, 427, - 428, 429, 615, 430, 431, 617, 729, 730, 1174, 1175, - 1176, 1177, 1026, 1027, 874, 383, 667, 1178, 1223, 673, - 668, 1179, 870, 1016, 448, 449, 1145, 450, 1142, 451, - 452, 1149, 453, 649, 650, 651, 858, 1102, 1100, 1105, - 1103, 1182, 1271, 1326, 1334, 1272, 1341, 1278, 1344, 1349, - 1279, 1354, 1296, 1319, 1266, 1327, 1328, 1335, 1336, 1329, - 1321, 1180, 42, 252, 353, 534, 44, 354, 253, 138, + 716, 717, 718, 905, 1037, 719, 720, 721, 910, 722, + 723, 914, 1047, 1124, 1197, 724, 1091, 725, 917, 1049, + 726, 727, 920, 1052, 489, 351, 41, 136, 245, 427, + 428, 429, 615, 430, 431, 617, 729, 730, 1170, 1171, + 1172, 1173, 1027, 1028, 874, 383, 667, 1174, 1219, 673, + 668, 1175, 870, 1017, 448, 449, 1143, 450, 1140, 451, + 452, 1147, 453, 649, 650, 651, 858, 1104, 1102, 1107, + 1105, 1178, 1267, 1322, 1330, 1268, 1337, 1274, 1340, 1345, + 1275, 1350, 1292, 1315, 1262, 1323, 1324, 1331, 1332, 1325, + 1317, 1176, 42, 252, 353, 534, 44, 354, 253, 138, 247, 538, 248, 441, 624, 435, 436, 621, 619, 254, 255, 445, 446, 634, 542, 630, 845, 631, 853, 46, 47, 48, 49, 50, 51, 454, 140, 52, 53, 256, @@ -1303,11 +1302,11 @@ static const yytype_int16 yydefgoto[] = 56, 257, 58, 149, 203, 298, 299, 492, 59, 60, 275, 276, 787, 277, 278, 279, 258, 259, 457, 876, 936, 375, 62, 152, 284, 285, 482, 478, 963, 738, - 680, 881, 1028, 63, 64, 65, 290, 486, 1153, 1194, - 1195, 1284, 66, 67, 68, 69, 70, 71, 72, 73, + 680, 881, 1029, 63, 64, 65, 290, 486, 1151, 1190, + 1191, 1280, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 210, 80, 318, 319, 506, 320, 321, 509, 937, 953, 461, 659, 941, 520, - 746, 739, 1131, 1132, 1133, 740, 741, 1056, 81, 82, + 746, 739, 1133, 1134, 1135, 740, 741, 1057, 81, 82, 83, 260, 84, 261, 85, 86, 262, 770, 263, 264, 265, 87, 88, 162, 324, 325, 703, 89, 292, 293, 294, 295, 90, 303, 304, 91, 308, 309, 92, 313, @@ -1315,8 +1314,8 @@ static const yytype_int16 yydefgoto[] = 96, 182, 97, 183, 184, 938, 218, 219, 837, 99, 186, 334, 335, 516, 336, 191, 342, 343, 927, 928, 742, 743, 100, 221, 222, 605, 939, 102, 224, 225, - 940, 1225, 103, 748, 328, 105, 523, 848, 849, 1060, - 1098, 524, 1061 + 940, 1221, 103, 748, 328, 105, 523, 848, 849, 1002, + 524, 1062 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1324,654 +1323,602 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 115, 672, 270, 236, 61, 421, 344, 479, 146, 291, - 57, 337, 187, 188, 339, 532, 347, 943, 531, 302, - 307, 312, 929, 613, 190, 1017, 434, 519, 421, 697, - 906, 711, 772, 326, 789, 871, 45, 737, 907, 345, - 926, 911, 54, 808, 931, 485, 970, 932, 1162, 349, - 918, 205, 803, 207, 512, 925, 1095, 1110, 1101, 1054, - 1101, 1106, 106, 1, 144, 670, 1325, 1325, 1333, 1333, - 671, 1340, 518, 1325, 15, 5, 114, 842, 249, 192, - 2, 193, 1, 194, 195, 464, 196, 250, 1170, 144, - 4, 5, 198, 199, 1318, 200, 201, 202, 204, 202, - 206, 202, 208, 209, 267, 211, 144, 212, 144, 189, - 40, 338, 476, 33, 340, 251, 1, 5, 447, 17, - 5, 5, 2, 134, 10, 333, 1184, 216, 266, 217, - 220, 223, 4, 226, 289, 1396, 246, 433, 1399, 26, - 145, 735, 1400, 29, 1106, 1403, 822, 333, 825, 1404, - 828, 422, 831, 189, 833, 316, 1013, 249, 26, 282, - 1394, 425, 29, 1172, 908, 145, 250, 912, 251, 370, - 915, 1012, 17, 19, 467, 31, 32, 476, 246, 1052, - 1423, 283, 145, 1038, 145, 1425, 484, 1077, 350, -629, - 352, 1039, 26, 5, 1041, 525, 29, 357, 34, 359, - -631, 502, 704, 362, 363, 1059, 735, 1049, 513, 364, - 365, 366, 367, 626, 368, -632, 369, 202, 371, 734, - 1094, 1190, 526, 1290, 326, 1205, 1357, 374, 956, 1113, - 707, 710, 378, 379, 961, 380, 485, 288, 948, 968, - 274, 384, 951, 682, 891, 386, 387, 850, 966, 731, - 389, 390, 708, 709, 442, 392, 393, 107, 108, 21, - 627, 2, 994, 398, 996, 1154, 15, 401, 19, 924, - 403, 4, 661, 246, 301, 483, 560, 405, 10, 408, - 409, 411, 412, 414, 36, 415, 1170, 600, 1114, 5, - 311, 7, 1286, 34, 1316, 1160, 1115, 1117, 5, 251, - 338, 1138, 1136, 340, 1125, 33, 12, 704, 1126, 1127, - 1128, 1129, 297, 670, 587, 459, 588, 1040, 671, 317, - 1042, 5, 1043, 5, 973, 1109, 1044, 296, 975, 31, - 32, 5, 978, 980, 981, 709, 664, 984, 985, 323, - 665, 987, -633, 899, 24, 903, 5, 633, 903, 493, - 5, 903, 496, 5, 903, 499, 807, 903, 1316, 704, - -51, 1172, 588, 1314, 315, 316, 1130, 443, 706, 707, - 527, 528, 1196, 476, 463, 473, 341, 352, 533, 664, - 536, 5, 687, 665, 537, 539, 540, 1091, 541, 21, - 868, 708, 709, 694, 306, 689, 696, 691, 546, 693, - 547, 548, 346, 549, 733, 551, 552, 762, 554, 555, - 1289, 556, 558, 1203, 36, -30, 562, 563, 564, 326, - 1185, 374, 1116, 1118, 1119, 1120, 569, 570, 1193, 5, - 573, 574, 1323, 851, 1316, 531, 229, 579, 580, 1147, - 582, 583, 5, 585, 586, 670, 1330, 444, 1310, 421, - 671, 704, 1347, 596, 597, 598, 654, 656, 1227, 1228, - 603, 459, 604, 532, 607, 882, 608, 1083, 1084, 1085, - 1086, 755, 676, 678, 757, 859, 860, 861, 708, 709, - 653, 655, 1166, 1273, 477, 1280, 1167, 1168, 1169, 517, - 7, 751, 5, 447, 490, 521, 675, 677, 1197, 1198, - 1199, 696, 10, 883, 903, 5, 903, 686, 522, 652, - 903, 5, 657, 423, 660, 1331, 1316, 662, 663, 424, - 1211, 213, 214, 251, 518, 674, -59, 17, 1217, 1218, - 1137, -59, -59, -59, 134, 228, 685, 286, 230, 231, - 232, 433, 688, 747, 1171, 690, 1158, 5, 692, 855, - 856, 857, 807, 31, 32, 752, 704, 329, 330, 698, - 706, 707, 533, 1285, 5, 533, 854, 537, 1186, 759, - 233, 234, 1189, 704, 1173, 628, 629, 1183, 707, 246, - 433, 1187, 587, 708, 709, 1192, 805, 764, 708, 709, - 423, 424, 765, 766, 767, 705, 768, 769, 771, 769, - 708, 709, 774, 884, 1350, 1350, 1067, 1068, 889, 903, - 228, 696, 892, 230, 231, 232, 921, 1309, 785, 786, - 788, 786, 588, 790, 1312, 791, 154, 793, 156, 795, - 158, 1099, 160, 709, 1058, 469, 502, 913, 942, 418, - 916, 1229, 804, 618, 971, 228, 815, 623, 230, 231, - 232, 233, 234, 805, 967, 806, 421, 1288, 816, 897, - 818, 900, 864, 821, 901, 824, 666, 827, 1037, 830, - 612, 830, 991, 992, 598, 839, 840, 836, 1123, 875, - 1164, 1165, 604, 604, 1294, 608, 1166, 1210, 1213, 844, - 1167, 1168, 1169, 807, 847, 684, 5, 696, 892, 1323, - 1104, 1316, 1188, 1338, 1352, 134, 228, 229, 728, 230, - 231, 232, 233, 234, 728, 1345, 43, 1166, 728, 1099, - 287, 1167, 1168, 1169, 622, 758, 933, 5, 5, 165, - 1058, 1331, 1316, 166, 167, 807, 168, 704, 169, 1320, - 705, 706, 707, 1337, 1337, 280, 1342, 1346, 1171, 1351, - 1351, 281, 1355, 1021, 1019, 566, 170, 1022, 1023, 1024, - 1015, 1015, 171, 5, 708, 709, 710, 683, 1282, 172, - 173, 807, 1032, 174, 1053, 141, 507, 175, 862, 1171, - 150, 866, 153, 268, 155, 269, 157, 699, 159, 176, - 700, 701, 702, 502, 759, 872, 844, 1045, 878, 1047, - 177, 178, 179, 180, 181, 769, 98, 835, 1076, 769, - 1397, 952, 406, 954, 955, 786, 101, 1401, 958, 896, - 3, 786, 421, 413, 962, 791, 410, 1405, 6, 228, - 229, 1406, 230, 231, 232, 233, 234, 8, 696, 806, - 1407, 830, 104, 974, 9, 830, 1003, 11, 1139, 977, - 979, 830, 0, 0, 983, 830, 1424, 986, 830, 0, - 988, 0, 16, 989, 0, 0, 0, 0, 836, 836, - 993, 0, 608, 18, 997, 998, 20, 1166, 22, 863, - 1111, 1167, 1168, 1169, 1001, 1002, 0, 5, 458, 25, - 0, 27, 1316, 28, 0, 30, 873, 0, 1121, 474, - 475, 35, 460, 462, 0, 0, 465, 466, 488, 228, - 229, 0, 230, 231, 232, 495, 696, 0, 498, 0, - 487, 501, 0, 0, 0, 0, 898, 494, 902, 511, - 497, 902, 0, 500, 902, 0, 0, 902, 0, 1171, - 902, 510, 0, 1057, 0, 0, 728, 0, 1062, 1063, - 1064, 1065, 0, 0, 934, 952, 952, 1015, 0, 228, - 0, 0, 230, 231, 232, 233, 234, 0, 0, 806, - 1200, 228, 229, 1075, 230, 231, 232, 233, 234, 0, - 1079, 1080, 1081, 0, 1082, 830, 830, 830, 0, 1087, - 0, 1088, 0, 0, 0, 608, 0, 1093, 0, 844, - 0, 0, 0, 1097, 0, 0, 0, 0, 1166, 1099, - 0, 0, 1167, 1168, 1169, 1170, 0, 0, 5, 0, - 0, 0, 0, 0, 0, 0, 0, 704, 1015, 0, - 705, 706, 707, 635, 636, 637, 638, 639, 640, 641, - 642, 643, 0, 1141, 0, 1144, 0, 608, 1148, 0, - 0, 0, 1151, 1152, 708, 709, 710, 1155, 1156, 0, - 1157, 0, 1011, 830, 5, 1159, 0, 0, 0, 0, - 1171, 5, 1025, 704, 844, 0, 705, 706, 707, 1163, - 704, 1097, 1097, 705, 706, 707, 0, 902, 0, 902, - 1172, 0, 0, 902, 0, 0, 0, 736, 0, 1015, - 708, 709, 710, 728, 0, 0, 0, 708, 709, 710, - 0, 1166, 0, 0, 0, 1167, 1168, 1169, 1170, 0, - 0, 5, 0, 1208, 0, 1209, 0, 1144, 608, 1212, - 704, 1148, 1214, 705, 706, 707, 1216, 608, 0, 1220, - 1191, 0, 0, 476, 0, 0, 1222, 1224, 0, 0, - 0, 5, 0, 0, 0, 0, 0, 708, 709, 710, - 704, 0, 0, 705, 706, 707, 0, 1395, 0, 0, - 1293, 1222, 735, 1171, 0, 0, 923, 736, 0, 1398, - 0, 0, 0, 0, 0, 0, 1402, 708, 709, 710, - 0, 0, 902, 1172, 0, 134, 228, 229, 0, 230, - 231, 232, 233, 234, 0, 0, 0, 728, 0, 1295, - 1297, 1298, 1299, 1300, 0, 0, 1302, 1303, 1304, 1305, - 1306, 476, 0, 1308, 0, 608, 0, 844, 0, 5, - 0, 0, 608, 0, 0, 0, 0, 0, 704, 0, - 0, 705, 706, 707, 0, 0, 0, 0, 0, 0, - 735, 728, 0, 0, 728, 736, 0, 0, 728, 0, - 0, 0, 728, 1361, 0, 708, 709, 710, 0, 0, - 1366, 0, 1369, 0, 0, 0, 0, 0, 1373, 0, - 1376, 0, 0, 0, 0, 1380, 0, 0, 1383, 0, - 0, 0, 0, 1387, 0, 0, 110, 0, 0, 0, - 0, 0, 0, 111, 112, 0, 113, 0, 0, 116, - 0, 117, 0, 118, 0, 0, 0, 119, 728, 120, - 0, 121, 0, 122, 0, 123, 728, 124, 0, 125, - 0, 126, 0, 0, 728, 1224, 0, 0, 0, 127, - 1411, 1413, 0, 0, 1416, 0, 128, 0, 129, 0, - 130, 0, 131, 0, 132, 1166, 133, 5, 0, 1167, - 1168, 1169, 1170, 0, 0, 5, 704, 0, 0, 705, - 706, 707, 0, 0, 704, 0, 0, 705, 706, 707, - 0, 0, 0, 736, 0, 747, 0, 0, 0, 0, - 0, 0, 0, 708, 709, 710, 0, 0, 197, 0, - 0, 708, 709, 710, 0, 1317, 0, 1324, 1324, 1332, - 1332, 0, 1339, 1343, 1324, 1348, 1348, 1171, 1353, 3, - 0, 0, 0, 0, 476, 0, 5, 6, 0, 0, - 0, 0, 5, 0, 0, 704, 8, 1172, 705, 706, - 707, 704, 227, 9, 705, 706, 707, 0, 0, 3, - 0, 0, 300, 735, 305, 14, 310, 6, 0, 322, - 0, 16, 708, 709, 710, 0, 8, 0, 708, 709, - 710, 0, 18, 9, 0, 20, 0, 22, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 25, 0, - 27, 16, 28, 0, 30, 0, 0, 0, 0, 355, - 35, 0, 18, 0, 356, 20, 358, 22, 0, 360, - 361, 0, 0, 0, 0, 0, 0, 0, 25, 0, - 27, 0, 28, 0, 30, 0, 0, 0, 0, 0, - 35, 372, 373, 0, 0, 0, 376, 0, 0, 377, - 0, 0, 0, 0, 5, 0, 381, 0, 0, 0, - 385, 0, 0, 704, 0, 388, 705, 706, 707, 0, - 391, 0, 0, 1191, 0, 394, 0, 0, 0, 0, - 397, 0, 400, 0, 0, 0, 402, 0, 1, 2, - 708, 709, 710, 404, 3, 0, 407, 0, 0, 4, - 0, 5, 6, 417, 416, 0, 0, 0, 7, 0, - 432, 8, 438, 439, 0, 0, 0, 0, 9, 10, - 0, 11, 0, 12, 0, 0, 0, 0, 13, 472, - 14, 0, 0, 15, 480, 0, 16, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 18, 0, 19, - 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, - 23, 24, 0, 25, 26, 27, 0, 28, 29, 30, - 31, 32, 33, 0, 34, 35, 36, 0, 0, 0, + 115, 236, 270, 57, 61, 344, 337, 146, 672, 339, + 479, 187, 188, 532, 871, 531, 291, 307, 906, 347, + 943, 421, 970, 929, 931, 697, 1160, 932, 613, 326, + 45, 54, 434, 907, 519, 312, 911, 485, 842, 345, + 1018, 808, 789, 302, 421, 190, 925, 772, 803, 349, + 926, 1097, 512, 107, 108, 135, 137, 139, 139, 142, + 1, 144, 148, 139, 151, 139, 148, 139, 148, 139, + 148, 139, 148, 161, 163, 1055, 185, 185, 185, 192, + 1314, 193, 1112, 194, 195, 464, 196, 205, 1103, 207, + 1103, 1108, 198, 199, 106, 200, 201, 202, 204, 202, + 206, 202, 208, 209, 918, 211, 1166, 212, 899, 5, + 903, 1, 134, 903, 1312, 266, 903, 10, 711, 903, + 267, 289, 903, 518, 737, 1166, 1, 216, 5, 217, + 220, 223, 338, 226, 15, 340, 26, 145, 244, 189, + 29, 249, 2, 272, 15, 144, 1390, 1180, 5, 114, + 250, 422, 4, 282, 144, 670, 5, 704, 311, 425, + 671, 189, 1013, 251, 1079, 5, 1014, 17, 31, 32, + 1108, 1039, -629, 33, 467, 283, 333, 333, 251, -631, + 1053, 1168, 17, 33, 708, 709, 1040, 26, 350, 1042, + 352, 29, -632, 484, 525, 423, 424, 357, 1353, 359, + 1168, 502, 26, 362, 363, 370, 29, 1115, 513, 364, + 365, 366, 367, 1286, 368, 1061, 369, 202, 371, 626, + 326, 145, 526, 994, 1096, 996, 734, 374, 485, 274, + 145, 288, 378, 379, 1186, 380, 956, 968, -633, 1201, + 891, 384, 961, 1152, 966, 386, 387, 731, 40, 682, + 389, 390, 850, 948, 246, 392, 393, 951, 5, 5, + 627, 1050, 19, 398, 144, 329, 330, 401, 704, 903, + 403, 903, 661, 5, 447, 903, 560, 405, 1116, 408, + 409, 411, 412, 414, 1138, 415, 707, 34, 2, 7, + 600, 315, 316, 1117, 1119, 2, 426, 710, 4, 323, + 1158, 440, 137, 1282, 12, 4, 1111, 316, 708, 709, + 134, 228, 229, 459, 230, 231, 232, 233, 234, 476, + 5, 338, 481, 137, 340, 476, 341, 5, 822, 704, + 825, 491, 828, 5, 831, 493, 833, 587, 496, 588, + 145, 499, 24, 505, 246, 433, 508, 633, 735, 1093, + 5, 246, 346, 515, 21, 1312, 924, 709, 1162, 306, + 443, 442, 1163, 1164, 1165, 1192, 21, 463, 5, -30, + 527, 528, 807, 1312, 1310, 473, 903, 352, 533, 36, + 536, 1326, 483, 249, 537, 539, 540, 1343, 541, 687, + 1199, 36, 250, 694, 691, 664, 696, 868, 546, 665, + 547, 548, 1145, 549, 733, 551, 552, 1285, 554, 555, + 762, 556, 558, 693, 444, 326, 562, 563, 564, 689, + 1167, 374, 755, 19, 229, 757, 569, 570, 10, 301, + 573, 574, 531, 1223, 1224, 706, 707, 579, 580, 851, + 582, 583, 664, 585, 586, 5, 665, 1306, 34, 251, + 297, 296, 5, 596, 597, 598, 459, 317, 708, 709, + 603, 532, 604, 447, 607, 421, 608, 653, 655, 5, + 1182, 882, 654, 656, 1185, 614, 616, 1207, 704, 31, + 32, 7, 670, 675, 677, 1213, 1214, 671, 676, 678, + 751, 1181, 5, 5, 686, 652, 658, 458, 657, 1189, + 660, 696, 5, 662, 663, 1319, 973, 1312, 474, 475, + 975, 674, 517, 679, 978, 980, 981, 488, 521, 984, + 985, 1059, 685, 987, 495, 233, 234, 498, 688, 518, + 501, 690, 423, 154, 692, 156, 1316, 158, 511, 160, + 1333, 1333, 522, 1338, 1342, 698, 1347, 1347, 1269, 1351, + 1276, 424, 745, 1127, 10, 752, 185, 1128, 1129, 1130, + 1131, -51, 533, 588, 433, 533, 854, 537, 807, 759, + 908, 747, 670, 912, 1305, 251, 915, 671, 1162, 17, + 587, 1308, 1163, 1164, 1165, 805, 5, 764, 5, 286, + 1327, 1312, 765, 766, 767, 705, 768, 769, 771, 769, + 213, 214, 774, 628, 629, 31, 32, 1393, 889, 921, + 884, 696, 892, 588, 1397, 1132, 246, 433, 785, 786, + 788, 786, 477, 790, 1401, 791, 1101, 793, 1402, 795, + 708, 709, 490, 942, 709, 913, 502, 1060, 916, 228, + 1167, 469, 230, 231, 232, 804, 815, 859, 860, 861, + 1085, 1086, 1087, 1088, 855, 856, 857, 418, 816, 1169, + 818, 864, 1179, 821, 971, 824, 1183, 827, 897, 830, + 1188, 830, 421, 967, 598, 883, 900, 836, 875, 5, + 1346, 1346, 604, 604, 901, 608, 1069, 1070, 704, 844, + 991, 992, 706, 707, 847, 1162, 1101, 696, 892, 1163, + 1164, 1165, 1166, 839, 840, 5, -59, 852, 1099, 1100, + 807, -59, -59, -59, 704, 708, 709, 705, 706, 707, + 1038, 612, 1125, 1041, 1225, 1290, 1043, 869, 1044, 869, + 1156, 1206, 1045, 134, 228, 684, 1209, 230, 231, 232, + 1284, 708, 709, 710, 1162, 1106, 1184, 1334, 1163, 1164, + 1165, 1348, 1341, 807, 5, 43, 758, 1167, 1327, 1312, + 1016, 1016, 287, 622, 933, 165, 904, 166, 167, 909, + 168, 862, 1033, 1054, 866, 169, 1020, 1168, 919, 566, + 280, 618, 281, 170, 679, 623, 171, 679, 872, 807, + 683, 878, 1278, 502, 759, 1046, 844, 1048, 460, 462, + 172, 173, 465, 466, 666, 769, 1167, 174, 507, 769, + 175, 952, 1078, 954, 955, 786, 487, 268, 958, 896, + 269, 786, 699, 494, 962, 791, 497, 700, 701, 500, + 1118, 1120, 1121, 1122, 702, 176, 421, 510, 177, 696, + 178, 830, 179, 974, 1101, 830, 728, 180, 181, 977, + 979, 830, 728, 5, 983, 830, 728, 986, 830, 1420, + 988, 835, 704, 989, 98, 705, 706, 707, 836, 836, + 993, 406, 608, 228, 997, 998, 230, 231, 232, 233, + 234, 805, 1113, 806, 1001, 1003, 410, 101, 104, 708, + 709, 710, 1321, 1321, 1329, 1329, 413, 1336, 1123, 1321, + 1403, 1162, 1193, 1194, 1195, 1163, 1164, 1165, 1004, 0, + 5, 5, 0, 0, 1319, 0, 1312, 5, 696, 704, + 0, 0, 705, 706, 707, 0, 704, 0, 0, 228, + 229, 707, 230, 231, 232, 1051, 736, 0, 747, 0, + 0, 0, 0, 1058, 1056, 0, 708, 709, 710, 1064, + 1065, 1066, 1067, 708, 709, 1016, 952, 952, 0, 0, + 0, 1392, 0, 1167, 1395, 1281, 1196, 0, 1396, 0, + 0, 1399, 0, 0, 1077, 1400, 0, 0, 0, 0, + 0, 1081, 1082, 1083, 0, 1084, 830, 830, 830, 0, + 1089, 0, 1090, 476, 0, 0, 608, 0, 1095, 0, + 844, 5, 0, 0, 1001, 1001, 1419, 0, 0, 0, + 704, 1421, 0, 705, 706, 707, 0, 863, 0, 0, + 0, 869, 735, 0, 1016, 228, 923, 736, 230, 231, + 232, 233, 234, 0, 873, 806, 1022, 708, 709, 710, + 1023, 1024, 1025, 0, 679, 1139, 5, 1142, 0, 608, + 1146, 0, 0, 0, 1149, 1150, 0, 0, 0, 1153, + 1154, 0, 1155, 0, 898, 830, 902, 1157, 0, 902, + 0, 0, 902, 0, 0, 902, 844, 0, 902, 0, + 0, 1161, 0, 0, 728, 0, 0, 1177, 0, 0, + 1177, 0, 934, 1162, 1177, 1016, 0, 1163, 1164, 1165, + 1166, 0, 0, 5, 0, 869, 0, 0, 0, 0, + 0, 0, 704, 0, 0, 705, 706, 707, 0, 1204, + 0, 1205, 1187, 1142, 608, 1208, 0, 1146, 1210, 0, + 0, 0, 1212, 608, 0, 1216, 0, 0, 0, 708, + 709, 710, 1218, 1220, 0, 141, 0, 0, 869, 869, + 150, 0, 153, 0, 155, 1167, 157, 476, 159, 0, + 0, 1279, 0, 1391, 0, 5, 1289, 1218, 0, 0, + 0, 0, 0, 1394, 704, 1168, 0, 705, 706, 707, + 1398, 0, 0, 0, 0, 0, 735, 0, 0, 228, + 229, 736, 230, 231, 232, 233, 234, 0, 0, 806, + 1012, 708, 709, 710, 0, 1291, 1293, 1294, 1295, 1296, + 1026, 0, 1298, 1299, 1300, 1301, 1302, 0, 0, 1304, + 0, 608, 0, 844, 0, 902, 0, 902, 608, 228, + 229, 902, 230, 231, 232, 233, 234, 0, 0, 0, + 110, 728, 0, 0, 0, 0, 0, 111, 112, 728, + 113, 0, 0, 116, 0, 117, 0, 118, 0, 1357, + 0, 119, 0, 120, 0, 121, 1362, 122, 1365, 123, + 0, 124, 0, 125, 1369, 126, 1372, 0, 0, 0, + 0, 1376, 0, 127, 1379, 0, 0, 0, 0, 1383, + 128, 0, 129, 0, 130, 0, 131, 0, 132, 1162, + 133, 0, 0, 1163, 1164, 1165, 1166, 0, 0, 5, + 0, 0, 0, 0, 0, 5, 0, 0, 704, 0, + 0, 705, 706, 707, 704, 0, 0, 705, 706, 707, + 0, 1220, 902, 0, 0, 0, 1407, 1409, 0, 0, + 1412, 736, 197, 1, 2, 708, 709, 710, 0, 3, + 0, 708, 709, 710, 4, 0, 5, 6, 0, 0, + 0, 1167, 0, 7, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 9, 10, 0, 11, 0, 12, 0, + 0, 1168, 0, 13, 0, 14, 227, 728, 15, 0, + 728, 16, 476, 0, 728, 0, 0, 0, 728, 17, + 5, 0, 18, 0, 19, 20, 21, 22, 0, 704, + 0, 0, 705, 706, 707, 23, 24, 0, 25, 26, + 27, 735, 28, 29, 30, 31, 32, 33, 0, 34, + 35, 36, 0, 5, 0, 0, 708, 709, 710, 0, + 0, 0, 704, 355, 0, 705, 706, 707, 356, 0, + 358, 0, 728, 360, 361, 0, 0, 0, 0, 0, + 728, 0, 0, 0, 0, 5, 0, 0, 728, 708, + 709, 710, 0, 0, 704, 372, 373, 705, 706, 707, + 376, 0, 0, 377, 1187, 0, 0, 0, 0, 0, + 381, 0, 0, 0, 385, 0, 0, 0, 0, 388, + 0, 708, 709, 710, 391, 0, 0, 0, 0, 394, + 0, 0, 0, 0, 397, 0, 400, 134, 228, 229, + 402, 230, 231, 232, 233, 234, 0, 404, 0, 0, + 407, 0, 0, 0, 0, 0, 0, 0, 416, 1313, + 0, 1320, 1320, 1328, 1328, 0, 1335, 1339, 1320, 1344, + 1344, 0, 1349, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, + 0, 0, 0, 0, 0, 704, 8, 0, 705, 706, + 707, 0, 0, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 305, 14, 310, 0, 0, 322, + 0, 16, 708, 709, 710, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 20, 0, 22, 0, 3, + 0, 0, 0, 0, 529, 0, 530, 6, 25, 0, + 27, 535, 28, 0, 30, 0, 8, 0, 0, 0, + 35, 543, 0, 9, 0, 3, 11, 0, 544, 0, + 0, 0, 0, 6, 0, 0, 550, 0, 0, 0, + 0, 16, 8, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 18, 0, 567, 20, 0, 22, 0, 0, + 571, 14, 0, 0, 0, 0, 0, 16, 25, 0, + 27, 0, 28, 0, 30, 0, 0, 0, 18, 0, + 35, 20, 0, 22, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 0, 25, 606, 27, 0, 28, 610, + 30, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, + 432, 0, 438, 439, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 646, 647, 648, 0, 472, + 0, 0, 0, 0, 480, 1263, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1264, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, + 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1265, 1266, + 1257, 1258, 1259, 1260, 1261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 529, 0, 530, 0, 0, 0, 0, 535, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 543, 0, 0, - 0, 0, 0, 545, 544, 0, 0, 0, 0, 0, - 0, 0, 550, 553, 0, 0, 0, 0, 0, 0, - 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 567, 0, 0, 0, 0, 572, 571, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 761, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 553, 0, 395, 396, 0, 399, 0, + 561, 0, 0, 781, 0, 0, 0, 0, 783, 0, + 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, 577, 578, 0, 0, 581, 0, 0, 584, 0, 0, 0, 0, 0, 0, 593, 0, 0, 595, 0, 0, 0, 0, 601, 0, 602, 0, 0, 0, 0, - 0, 606, 0, 0, 611, 610, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 625, 0, 0, - 0, 632, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 669, 0, 0, 0, + 0, 817, 0, 820, 611, 0, 823, 0, 826, 0, + 829, 0, 832, 0, 0, 834, 0, 625, 0, 0, + 0, 632, 0, 838, 0, 0, 841, 0, 843, 0, + 0, 0, 0, 846, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, 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, 732, 0, 0, 0, 0, 0, 744, 0, 0, 0, 750, 0, - 0, 0, 0, 0, 753, 0, 754, 0, 0, 0, - 756, 0, 0, 0, 0, 0, 760, 0, 0, 0, - 0, 0, 761, 763, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 753, 0, 754, 559, 0, 0, + 756, 0, 0, 0, 0, 565, 760, 0, 0, 0, + 568, 0, 0, 763, 0, 0, 0, 575, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 773, 0, 0, 775, - 776, 777, 778, 0, 0, 0, 0, 0, 0, 781, - 0, 0, 0, 784, 783, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 594, 773, 0, 0, 775, + 776, 777, 778, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, 792, 0, 794, 0, 0, 797, 0, 799, 0, 801, 0, 0, 0, 0, 0, 814, 0, 0, + 1226, 1227, 1228, 1229, 1230, 1231, 1232, 0, 1233, 1234, + 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1255, 1256, 0, 995, 1257, 1258, 1259, 1260, 1261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 817, 0, 820, - 0, 0, 823, 0, 826, 0, 829, 0, 832, 0, - 0, 834, 0, 0, 0, 0, 0, 0, 0, 838, - 0, 0, 841, 0, 843, 0, 0, 0, 0, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 865, 0, 867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 0, 879, 0, 0, 0, 0, 0, 0, 885, 0, 886, 0, 887, - 0, 888, 0, 0, 0, 0, 0, 135, 137, 139, - 139, 142, 0, 0, 148, 139, 151, 139, 148, 139, - 148, 139, 148, 139, 148, 161, 163, 0, 185, 185, - 185, 0, 0, 0, 0, 0, 930, 0, 0, 0, - 0, 0, 0, 0, 935, 0, 0, 0, 0, 0, + 0, 888, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 779, 780, 0, 0, 0, 0, + 782, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1075, 0, 796, 930, 798, 0, 800, + 0, 802, 0, 0, 935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 395, 396, 0, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 244, 0, 0, 0, 0, 272, 0, 0, 0, 0, - 0, 0, 0, 0, 976, 0, 0, 0, 0, 982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 990, 0, 0, 0, 0, 0, 0, 0, 995, + 0, 0, 1137, 0, 976, 0, 0, 0, 1141, 982, + 1144, 0, 0, 1148, 0, 0, 0, 0, 0, 0, + 0, 990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 999, 0, 0, 0, 0, 0, 0, 1000, - 0, 0, 1004, 1005, 1006, 1007, 1008, 1009, 0, 0, - 1010, 0, 1014, 0, 0, 1018, 0, 0, 0, 0, - 1020, 0, 1029, 1030, 1031, 0, 0, 0, 0, 0, - 0, 1035, 1267, 1230, 1231, 1232, 1233, 1234, 1235, 1236, - 1268, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1269, 1270, 1261, 1262, 1263, - 1264, 1265, 0, 559, 0, 0, 0, 0, 0, 0, - 0, 565, 0, 0, 0, 0, 568, 0, 1073, 0, - 0, 0, 0, 575, 576, 1078, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 426, 0, - 1090, 594, 1092, 440, 137, 0, 0, 0, 0, 1096, - 0, 0, 0, 0, 0, 0, 0, 0, 1107, 1108, - 0, 0, 0, 0, 481, 137, 0, 0, 0, 0, - 0, 0, 0, 491, 0, 0, 0, 0, 1124, 0, - 0, 0, 0, 1134, 0, 505, 1135, 1140, 508, 0, - 0, 0, 1143, 0, 1146, 515, 0, 1150, 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, 1161, 0, 0, 0, 0, 0, + 1159, 0, 1005, 1006, 1007, 1008, 1009, 1010, 0, 0, + 1011, 0, 1015, 0, 0, 1019, 0, 0, 0, 0, + 1021, 0, 1030, 1031, 1032, 0, 0, 0, 0, 0, + 0, 1036, 0, 0, 0, 0, 0, 0, 1202, 0, + 1203, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1215, 0, 0, 0, + 0, 1063, 0, 0, 0, 0, 944, 945, 946, 947, + 0, 949, 950, 0, 0, 0, 0, 0, 0, 0, + 0, 957, 0, 959, 960, 0, 0, 0, 0, 0, + 0, 964, 965, 0, 0, 0, 1080, 0, 0, 0, + 0, 0, 0, 0, 972, 0, 0, 0, 0, 0, + 0, 1092, 0, 1094, 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, 1202, - 0, 1204, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1206, 0, - 1207, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1219, 0, 0, 0, - 1221, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 779, 780, 0, 0, 1281, 0, 782, 0, 0, 0, - 0, 0, 1287, 0, 1291, 1292, 0, 614, 616, 0, - 0, 796, 0, 798, 0, 800, 0, 802, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 658, 0, + 1109, 1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 679, 0, 0, 0, 0, - 1301, 0, 0, 0, 0, 0, 0, 1307, 0, 0, + 1126, 1309, 0, 0, 0, 1136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1313, 0, 1315, 0, 1322, 0, 0, 0, 0, - 0, 0, 0, 0, 745, 0, 0, 0, 185, 1356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1363, 0, 0, 0, 0, 0, 0, 1368, - 0, 0, 0, 0, 0, 0, 0, 1375, 0, 0, + 0, 0, 1359, 0, 0, 0, 0, 0, 0, 1364, + 0, 0, 0, 0, 0, 0, 0, 1371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1392, 1393, 0, 0, - 0, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 0, 1237, - 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, - 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, - 1258, 1259, 1260, 0, 1409, 1261, 1262, 1263, 1264, 1265, - 0, 1418, 944, 945, 946, 947, 0, 949, 950, 0, - 0, 0, 0, 0, 0, 0, 0, 957, 0, 959, - 960, 0, 0, 1427, 0, 0, 0, 964, 965, 0, + 0, 0, 0, 0, 0, 0, 0, 1198, 0, 1200, + 1068, 0, 0, 0, 0, 1071, 1072, 0, 1073, 0, + 0, 0, 0, 0, 1074, 0, 0, 1076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 972, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 852, + 0, 0, 0, 0, 0, 0, 1217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 869, - 0, 869, 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, 904, 0, - 0, 909, 0, 0, 0, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 0, 0, 679, 0, 0, 679, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, - 1069, 1070, 0, 1071, 0, 0, 0, 0, 0, 1072, - 0, 0, 1074, 1274, 1230, 1231, 1232, 1233, 1234, 1235, - 1236, 1275, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, - 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, - 1255, 1256, 1257, 1258, 1259, 1260, 1276, 1277, 1261, 1262, - 1263, 1264, 1265, 0, 0, 0, 0, 0, 0, 0, + 1277, 0, 0, 0, 0, 0, 0, 0, 1283, 0, + 1287, 1288, 1270, 1226, 1227, 1228, 1229, 1230, 1231, 1232, + 1271, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, + 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, + 1252, 1253, 1254, 1255, 1256, 1272, 1273, 1257, 1258, 1259, + 1260, 1261, 0, 0, 0, 0, 1297, 0, 0, 0, + 0, 0, 0, 1303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1311, + 0, 1318, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1352, 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, 1211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1222, + 0, 0, 1388, 1389, 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, + 1405, 0, 0, 0, 0, 0, 0, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1050, 0, 0, - 0, 0, 0, 0, 0, 0, 1055, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1307, 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, 1354, 0, + 0, 1355, 1356, 0, 1358, 0, 0, 0, 1360, 1361, + 0, 1363, 0, 1366, 0, 0, 1367, 1368, 0, 1370, + 0, 1373, 0, 1374, 1375, 0, 1377, 1378, 0, 1380, + 1381, 0, 1382, 0, 1384, 1385, 0, 1386, 0, 1387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1215, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 679, 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, - 1311, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1181, 0, 0, 1181, 0, 0, 0, 1181, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1358, 869, - 0, 1359, 1360, 0, 1362, 0, 0, 0, 1364, 1365, - 0, 1367, 0, 1370, 0, 0, 1371, 1372, 0, 1374, - 0, 1377, 0, 1378, 1379, 0, 1381, 1382, 0, 1384, - 1385, 0, 1386, 0, 1388, 1389, 0, 1390, 0, 1391, - 0, 0, 0, 0, 869, 869, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1283, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1408, 0, - 1410, 1412, 0, 1414, 1415, 1417, 0, 1419, 1420, 1421, - 1422, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1426, 0, 1428 + 0, 0, 0, 0, 0, 0, 0, 0, 1404, 0, + 1406, 1408, 0, 1410, 1411, 1413, 0, 1415, 1416, 1417, + 1418, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1422, 0, 1424 }; static const yytype_int16 yycheck[] = { - 57, 558, 196, 192, 0, 346, 227, 374, 115, 201, - 0, 220, 131, 132, 223, 434, 242, 853, 434, 204, - 206, 208, 836, 528, 133, 955, 352, 411, 369, 592, - 821, 598, 656, 212, 678, 783, 0, 604, 821, 235, - 836, 824, 0, 697, 838, 379, 893, 841, 1135, 243, - 832, 156, 694, 158, 403, 836, 1057, 1075, 1062, 997, - 1064, 1065, 0, 4, 6, 7, 1297, 1298, 1299, 1300, - 12, 1302, 25, 1304, 49, 17, 163, 742, 19, 136, - 5, 138, 4, 140, 141, 365, 143, 28, 14, 6, - 15, 17, 149, 150, 1295, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 195, 162, 6, 164, 6, 40, - 0, 220, 9, 88, 223, 56, 4, 17, 16, 60, - 17, 17, 5, 147, 35, 78, 1144, 184, 195, 186, - 187, 188, 15, 190, 201, 1366, 61, 62, 1369, 80, - 82, 38, 1373, 84, 1148, 1376, 720, 78, 722, 1380, - 724, 347, 726, 40, 728, 51, 952, 19, 80, 3, - 1361, 350, 84, 89, 821, 82, 28, 824, 56, 274, - 827, 952, 60, 65, 368, 86, 87, 9, 61, 993, - 1411, 25, 82, 974, 82, 1416, 378, 1034, 245, 163, - 247, 974, 80, 17, 977, 416, 84, 254, 90, 256, - 163, 397, 26, 260, 261, 1001, 38, 989, 404, 266, - 267, 268, 269, 539, 271, 163, 273, 274, 275, 603, - 1056, 1151, 418, 1224, 403, 1163, 1313, 284, 872, 1076, - 31, 55, 289, 290, 878, 292, 570, 201, 862, 893, - 198, 298, 866, 569, 807, 302, 303, 752, 890, 598, - 307, 308, 53, 54, 356, 312, 313, 159, 160, 67, - 540, 5, 927, 320, 929, 1112, 49, 324, 65, 836, - 327, 15, 552, 61, 71, 377, 470, 334, 35, 336, - 337, 338, 339, 340, 92, 342, 14, 513, 1079, 17, - 73, 24, 1222, 90, 22, 1131, 1079, 1080, 17, 56, - 409, 1097, 1096, 412, 7, 88, 39, 26, 11, 12, - 13, 14, 202, 7, 155, 48, 157, 974, 12, 209, - 977, 17, 979, 17, 898, 1073, 983, 23, 902, 86, - 87, 17, 906, 907, 908, 54, 7, 911, 912, 64, - 11, 915, 163, 816, 77, 818, 17, 543, 821, 386, - 17, 824, 389, 17, 827, 392, 697, 830, 22, 26, - 155, 89, 157, 1293, 50, 51, 69, 357, 30, 31, - 427, 428, 1155, 9, 364, 371, 41, 434, 435, 7, - 437, 17, 574, 11, 441, 442, 443, 1052, 445, 67, - 774, 53, 54, 589, 72, 580, 592, 583, 455, 586, - 457, 458, 150, 460, 600, 462, 463, 633, 465, 466, - 1224, 468, 469, 1161, 92, 150, 473, 474, 475, 598, - 1144, 478, 1079, 1080, 1081, 1082, 483, 484, 1152, 17, - 487, 488, 20, 759, 22, 851, 149, 494, 495, 1104, - 497, 498, 17, 500, 501, 7, 1298, 57, 1284, 790, - 12, 26, 1304, 510, 511, 512, 547, 548, 1206, 1207, - 517, 48, 519, 882, 521, 791, 523, 1041, 1042, 1043, - 1044, 619, 563, 564, 622, 765, 766, 767, 53, 54, - 547, 548, 7, 1212, 374, 1214, 11, 12, 13, 408, - 24, 610, 17, 16, 384, 414, 563, 564, 1155, 1156, - 1157, 697, 35, 793, 977, 17, 979, 574, 47, 546, - 983, 17, 549, 32, 551, 21, 22, 554, 555, 33, - 1185, 161, 162, 56, 25, 562, 156, 60, 1193, 1194, - 1097, 161, 162, 163, 147, 148, 573, 70, 151, 152, - 153, 62, 579, 45, 69, 582, 1120, 17, 585, 151, - 152, 153, 893, 86, 87, 612, 26, 74, 75, 596, - 30, 31, 619, 1220, 17, 622, 762, 624, 1146, 626, - 154, 155, 1150, 26, 1141, 58, 59, 1144, 31, 61, - 62, 1148, 155, 53, 54, 1152, 156, 644, 53, 54, - 32, 33, 649, 650, 651, 29, 653, 654, 655, 656, - 53, 54, 659, 795, 1305, 1306, 1012, 1013, 804, 1082, - 148, 807, 808, 151, 152, 153, 147, 1282, 675, 676, - 677, 678, 157, 680, 1289, 682, 120, 684, 122, 686, - 124, 8, 126, 54, 1001, 369, 832, 826, 847, 346, - 829, 1208, 695, 533, 894, 148, 703, 537, 151, 152, - 153, 154, 155, 156, 891, 158, 997, 1224, 715, 816, - 717, 817, 769, 720, 818, 722, 556, 724, 974, 726, - 527, 728, 925, 926, 731, 739, 740, 734, 1088, 786, - 1138, 1139, 739, 740, 1228, 742, 7, 1184, 1188, 746, - 11, 12, 13, 1034, 751, 571, 17, 893, 894, 20, - 1064, 22, 1148, 1300, 1306, 147, 148, 149, 598, 151, - 152, 153, 154, 155, 604, 1303, 0, 7, 608, 8, - 201, 11, 12, 13, 536, 624, 843, 17, 17, 129, - 1097, 21, 22, 129, 129, 1076, 129, 26, 129, 1295, - 29, 30, 31, 1299, 1300, 199, 1302, 1303, 69, 1305, - 1306, 199, 1308, 7, 958, 478, 129, 11, 12, 13, - 954, 955, 129, 17, 53, 54, 55, 570, 1216, 129, - 129, 1112, 968, 129, 995, 112, 398, 129, 768, 69, - 117, 771, 119, 195, 121, 195, 123, 597, 125, 129, - 597, 597, 597, 989, 851, 785, 853, 986, 788, 988, - 129, 129, 129, 129, 129, 862, 0, 731, 1034, 866, - 1366, 868, 334, 870, 871, 872, 0, 1373, 875, 815, - 10, 878, 1163, 339, 881, 882, 337, 1383, 18, 148, - 149, 1387, 151, 152, 153, 154, 155, 27, 1034, 158, - 1392, 898, 0, 900, 34, 902, 942, 37, 1097, 906, - 907, 908, -1, -1, 911, 912, 1413, 914, 915, -1, - 917, -1, 52, 920, -1, -1, -1, -1, 925, 926, - 927, -1, 929, 63, 931, 932, 66, 7, 68, 769, - 1076, 11, 12, 13, 941, 942, -1, 17, 361, 79, - -1, 81, 22, 83, -1, 85, 786, -1, 1087, 372, - 373, 91, 362, 363, -1, -1, 366, 367, 381, 148, - 149, -1, 151, 152, 153, 388, 1112, -1, 391, -1, - 380, 394, -1, -1, -1, -1, 816, 387, 818, 402, - 390, 821, -1, 393, 824, -1, -1, 827, -1, 69, - 830, 401, -1, 1000, -1, -1, 836, -1, 1005, 1006, - 1007, 1008, -1, -1, 844, 1012, 1013, 1151, -1, 148, - -1, -1, 151, 152, 153, 154, 155, -1, -1, 158, - 1159, 148, 149, 1030, 151, 152, 153, 154, 155, -1, - 1037, 1038, 1039, -1, 1041, 1042, 1043, 1044, -1, 1046, - -1, 1048, -1, -1, -1, 1052, -1, 1054, -1, 1056, - -1, -1, -1, 1060, -1, -1, -1, -1, 7, 8, - -1, -1, 11, 12, 13, 14, -1, -1, 17, -1, - -1, -1, -1, -1, -1, -1, -1, 26, 1222, -1, - 29, 30, 31, 93, 94, 95, 96, 97, 98, 99, - 100, 101, -1, 1100, -1, 1102, -1, 1104, 1105, -1, - -1, -1, 1109, 1110, 53, 54, 55, 1114, 1115, -1, - 1117, -1, 952, 1120, 17, 1122, -1, -1, -1, -1, - 69, 17, 962, 26, 1131, -1, 29, 30, 31, 1136, - 26, 1138, 1139, 29, 30, 31, -1, 977, -1, 979, - 89, -1, -1, 983, -1, -1, -1, 43, -1, 1293, - 53, 54, 55, 993, -1, -1, -1, 53, 54, 55, - -1, 7, -1, -1, -1, 11, 12, 13, 14, -1, - -1, 17, -1, 1180, -1, 1182, -1, 1184, 1185, 1186, - 26, 1188, 1189, 29, 30, 31, 1193, 1194, -1, 1196, - 36, -1, -1, 9, -1, -1, 1203, 1204, -1, -1, - -1, 17, -1, -1, -1, -1, -1, 53, 54, 55, - 26, -1, -1, 29, 30, 31, -1, 1363, -1, -1, - 1227, 1228, 38, 69, -1, -1, 42, 43, -1, 1368, - -1, -1, -1, -1, -1, -1, 1375, 53, 54, 55, - -1, -1, 1082, 89, -1, 147, 148, 149, -1, 151, - 152, 153, 154, 155, -1, -1, -1, 1097, -1, 1266, - 1267, 1268, 1269, 1270, -1, -1, 1273, 1274, 1275, 1276, - 1277, 9, -1, 1280, -1, 1282, -1, 1284, -1, 17, - -1, -1, 1289, -1, -1, -1, -1, -1, 26, -1, - -1, 29, 30, 31, -1, -1, -1, -1, -1, -1, - 38, 1141, -1, -1, 1144, 43, -1, -1, 1148, -1, - -1, -1, 1152, 1320, -1, 53, 54, 55, -1, -1, - 1327, -1, 1329, -1, -1, -1, -1, -1, 1335, -1, - 1337, -1, -1, -1, -1, 1342, -1, -1, 1345, -1, - -1, -1, -1, 1350, -1, -1, 45, -1, -1, -1, - -1, -1, -1, 52, 53, -1, 55, -1, -1, 58, - -1, 60, -1, 62, -1, -1, -1, 66, 1208, 68, - -1, 70, -1, 72, -1, 74, 1216, 76, -1, 78, - -1, 80, -1, -1, 1224, 1392, -1, -1, -1, 88, - 1397, 1398, -1, -1, 1401, -1, 95, -1, 97, -1, - 99, -1, 101, -1, 103, 7, 105, 17, -1, 11, - 12, 13, 14, -1, -1, 17, 26, -1, -1, 29, - 30, 31, -1, -1, 26, -1, -1, 29, 30, 31, - -1, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, -1, 53, 54, 55, -1, -1, 147, -1, - -1, 53, 54, 55, -1, 1295, -1, 1297, 1298, 1299, - 1300, -1, 1302, 1303, 1304, 1305, 1306, 69, 1308, 10, - -1, -1, -1, -1, 9, -1, 17, 18, -1, -1, - -1, -1, 17, -1, -1, 26, 27, 89, 29, 30, - 31, 26, 191, 34, 29, 30, 31, -1, -1, 10, - -1, -1, 203, 38, 205, 46, 207, 18, -1, 210, - -1, 52, 53, 54, 55, -1, 27, -1, 53, 54, - 55, -1, 63, 34, -1, 66, -1, 68, -1, -1, - -1, -1, -1, -1, -1, 46, -1, -1, 79, -1, - 81, 52, 83, -1, 85, -1, -1, -1, -1, 248, - 91, -1, 63, -1, 253, 66, 255, 68, -1, 258, - 259, -1, -1, -1, -1, -1, -1, -1, 79, -1, - 81, -1, 83, -1, 85, -1, -1, -1, -1, -1, - 91, 280, 281, -1, -1, -1, 285, -1, -1, 288, - -1, -1, -1, -1, 17, -1, 295, -1, -1, -1, - 299, -1, -1, 26, -1, 304, 29, 30, 31, -1, - 309, -1, -1, 36, -1, 314, -1, -1, -1, -1, - 319, -1, 321, -1, -1, -1, 325, -1, 4, 5, - 53, 54, 55, 332, 10, -1, 335, -1, -1, 15, - -1, 17, 18, 344, 343, -1, -1, -1, 24, -1, - 351, 27, 353, 354, -1, -1, -1, -1, 34, 35, - -1, 37, -1, 39, -1, -1, -1, -1, 44, 370, - 46, -1, -1, 49, 375, -1, 52, -1, -1, -1, - -1, -1, -1, -1, 60, -1, -1, 63, -1, 65, - 66, 67, 68, -1, -1, -1, -1, -1, -1, -1, - 76, 77, -1, 79, 80, 81, -1, 83, 84, 85, - 86, 87, 88, -1, 90, 91, 92, -1, -1, -1, + 57, 192, 196, 0, 0, 227, 220, 115, 558, 223, + 374, 131, 132, 434, 783, 434, 201, 206, 821, 242, + 853, 346, 893, 836, 838, 592, 1137, 841, 528, 212, + 0, 0, 352, 821, 411, 208, 824, 379, 742, 235, + 955, 697, 678, 204, 369, 133, 836, 656, 694, 243, + 836, 1058, 403, 159, 160, 109, 110, 111, 112, 113, + 4, 6, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 997, 130, 131, 132, 136, + 1291, 138, 1077, 140, 141, 365, 143, 156, 1064, 158, + 1066, 1067, 149, 150, 0, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 832, 162, 14, 164, 816, 17, + 818, 4, 147, 821, 22, 195, 824, 35, 598, 827, + 195, 201, 830, 25, 604, 14, 4, 184, 17, 186, + 187, 188, 220, 190, 49, 223, 80, 82, 192, 40, + 84, 19, 5, 197, 49, 6, 1357, 1142, 17, 163, + 28, 347, 15, 3, 6, 7, 17, 26, 73, 350, + 12, 40, 952, 56, 1035, 17, 952, 60, 86, 87, + 1146, 974, 163, 88, 368, 25, 78, 78, 56, 163, + 993, 89, 60, 88, 53, 54, 974, 80, 245, 977, + 247, 84, 163, 378, 416, 32, 33, 254, 1309, 256, + 89, 397, 80, 260, 261, 274, 84, 1078, 404, 266, + 267, 268, 269, 1220, 271, 1001, 273, 274, 275, 539, + 403, 82, 418, 927, 1057, 929, 603, 284, 570, 198, + 82, 201, 289, 290, 1149, 292, 872, 893, 163, 1161, + 807, 298, 878, 1114, 890, 302, 303, 598, 0, 569, + 307, 308, 752, 862, 61, 312, 313, 866, 17, 17, + 540, 989, 65, 320, 6, 74, 75, 324, 26, 977, + 327, 979, 552, 17, 16, 983, 470, 334, 1081, 336, + 337, 338, 339, 340, 1098, 342, 31, 90, 5, 24, + 513, 50, 51, 1081, 1082, 5, 350, 55, 15, 64, + 1133, 355, 356, 1218, 39, 15, 1075, 51, 53, 54, + 147, 148, 149, 48, 151, 152, 153, 154, 155, 9, + 17, 409, 376, 377, 412, 9, 41, 17, 720, 26, + 722, 385, 724, 17, 726, 386, 728, 155, 389, 157, + 82, 392, 77, 397, 61, 62, 400, 543, 38, 1053, + 17, 61, 150, 407, 67, 22, 836, 54, 7, 72, + 357, 356, 11, 12, 13, 1153, 67, 364, 17, 150, + 427, 428, 697, 22, 1289, 371, 1084, 434, 435, 92, + 437, 1294, 377, 19, 441, 442, 443, 1300, 445, 574, + 1159, 92, 28, 589, 583, 7, 592, 774, 455, 11, + 457, 458, 1106, 460, 600, 462, 463, 1220, 465, 466, + 633, 468, 469, 586, 57, 598, 473, 474, 475, 580, + 69, 478, 619, 65, 149, 622, 483, 484, 35, 71, + 487, 488, 851, 1202, 1203, 30, 31, 494, 495, 759, + 497, 498, 7, 500, 501, 17, 11, 1280, 90, 56, + 202, 23, 17, 510, 511, 512, 48, 209, 53, 54, + 517, 882, 519, 16, 521, 790, 523, 547, 548, 17, + 1144, 791, 547, 548, 1148, 529, 530, 1181, 26, 86, + 87, 24, 7, 563, 564, 1189, 1190, 12, 563, 564, + 610, 1142, 17, 17, 574, 546, 550, 361, 549, 1150, + 551, 697, 17, 554, 555, 20, 898, 22, 372, 373, + 902, 562, 408, 567, 906, 907, 908, 381, 414, 911, + 912, 1001, 573, 915, 388, 154, 155, 391, 579, 25, + 394, 582, 32, 120, 585, 122, 1291, 124, 402, 126, + 1295, 1296, 47, 1298, 1299, 596, 1301, 1302, 1208, 1304, + 1210, 33, 606, 7, 35, 612, 610, 11, 12, 13, + 14, 155, 619, 157, 62, 622, 762, 624, 893, 626, + 821, 45, 7, 824, 1278, 56, 827, 12, 7, 60, + 155, 1285, 11, 12, 13, 156, 17, 644, 17, 70, + 21, 22, 649, 650, 651, 29, 653, 654, 655, 656, + 161, 162, 659, 58, 59, 86, 87, 1362, 804, 147, + 795, 807, 808, 157, 1369, 69, 61, 62, 675, 676, + 677, 678, 374, 680, 1379, 682, 8, 684, 1383, 686, + 53, 54, 384, 847, 54, 826, 832, 1001, 829, 148, + 69, 369, 151, 152, 153, 695, 703, 765, 766, 767, + 1042, 1043, 1044, 1045, 151, 152, 153, 346, 715, 1139, + 717, 769, 1142, 720, 894, 722, 1146, 724, 816, 726, + 1150, 728, 997, 891, 731, 793, 817, 734, 786, 17, + 1301, 1302, 739, 740, 818, 742, 1013, 1014, 26, 746, + 925, 926, 30, 31, 751, 7, 8, 893, 894, 11, + 12, 13, 14, 739, 740, 17, 156, 761, 1061, 1062, + 1035, 161, 162, 163, 26, 53, 54, 29, 30, 31, + 974, 527, 1090, 974, 1204, 1224, 977, 781, 979, 783, + 1122, 1180, 983, 147, 148, 571, 1184, 151, 152, 153, + 1220, 53, 54, 55, 7, 1066, 1146, 1296, 11, 12, + 13, 1302, 1299, 1078, 17, 0, 624, 69, 21, 22, + 954, 955, 201, 536, 843, 129, 820, 129, 129, 823, + 129, 768, 968, 995, 771, 129, 958, 89, 832, 478, + 199, 533, 199, 129, 838, 537, 129, 841, 785, 1114, + 570, 788, 1212, 989, 851, 986, 853, 988, 362, 363, + 129, 129, 366, 367, 556, 862, 69, 129, 398, 866, + 129, 868, 1035, 870, 871, 872, 380, 195, 875, 815, + 195, 878, 597, 387, 881, 882, 390, 597, 597, 393, + 1081, 1082, 1083, 1084, 597, 129, 1161, 401, 129, 1035, + 129, 898, 129, 900, 8, 902, 598, 129, 129, 906, + 907, 908, 604, 17, 911, 912, 608, 914, 915, 1409, + 917, 731, 26, 920, 0, 29, 30, 31, 925, 926, + 927, 334, 929, 148, 931, 932, 151, 152, 153, 154, + 155, 156, 1078, 158, 941, 942, 337, 0, 0, 53, + 54, 55, 1293, 1294, 1295, 1296, 339, 1298, 1089, 1300, + 1388, 7, 1153, 1154, 1155, 11, 12, 13, 942, -1, + 17, 17, -1, -1, 20, -1, 22, 17, 1114, 26, + -1, -1, 29, 30, 31, -1, 26, -1, -1, 148, + 149, 31, 151, 152, 153, 989, 43, -1, 45, -1, + -1, -1, -1, 1000, 998, -1, 53, 54, 55, 1006, + 1007, 1008, 1009, 53, 54, 1149, 1013, 1014, -1, -1, + -1, 1362, -1, 69, 1365, 1216, 1157, -1, 1369, -1, + -1, 1372, -1, -1, 1031, 1376, -1, -1, -1, -1, + -1, 1038, 1039, 1040, -1, 1042, 1043, 1044, 1045, -1, + 1047, -1, 1049, 9, -1, -1, 1053, -1, 1055, -1, + 1057, 17, -1, -1, 1061, 1062, 1407, -1, -1, -1, + 26, 1412, -1, 29, 30, 31, -1, 769, -1, -1, + -1, 1075, 38, -1, 1218, 148, 42, 43, 151, 152, + 153, 154, 155, -1, 786, 158, 7, 53, 54, 55, + 11, 12, 13, -1, 1098, 1102, 17, 1104, -1, 1106, + 1107, -1, -1, -1, 1111, 1112, -1, -1, -1, 1116, + 1117, -1, 1119, -1, 816, 1122, 818, 1124, -1, 821, + -1, -1, 824, -1, -1, 827, 1133, -1, 830, -1, + -1, 1138, -1, -1, 836, -1, -1, 1141, -1, -1, + 1144, -1, 844, 7, 1148, 1289, -1, 11, 12, 13, + 14, -1, -1, 17, -1, 1159, -1, -1, -1, -1, + -1, -1, 26, -1, -1, 29, 30, 31, -1, 1176, + -1, 1178, 36, 1180, 1181, 1182, -1, 1184, 1185, -1, + -1, -1, 1189, 1190, -1, 1192, -1, -1, -1, 53, + 54, 55, 1199, 1200, -1, 112, -1, -1, 1202, 1203, + 117, -1, 119, -1, 121, 69, 123, 9, 125, -1, + -1, 1215, -1, 1359, -1, 17, 1223, 1224, -1, -1, + -1, -1, -1, 1364, 26, 89, -1, 29, 30, 31, + 1371, -1, -1, -1, -1, -1, 38, -1, -1, 148, + 149, 43, 151, 152, 153, 154, 155, -1, -1, 158, + 952, 53, 54, 55, -1, 1262, 1263, 1264, 1265, 1266, + 962, -1, 1269, 1270, 1271, 1272, 1273, -1, -1, 1276, + -1, 1278, -1, 1280, -1, 977, -1, 979, 1285, 148, + 149, 983, 151, 152, 153, 154, 155, -1, -1, -1, + 45, 993, -1, -1, -1, -1, -1, 52, 53, 1001, + 55, -1, -1, 58, -1, 60, -1, 62, -1, 1316, + -1, 66, -1, 68, -1, 70, 1323, 72, 1325, 74, + -1, 76, -1, 78, 1331, 80, 1333, -1, -1, -1, + -1, 1338, -1, 88, 1341, -1, -1, -1, -1, 1346, + 95, -1, 97, -1, 99, -1, 101, -1, 103, 7, + 105, -1, -1, 11, 12, 13, 14, -1, -1, 17, + -1, -1, -1, -1, -1, 17, -1, -1, 26, -1, + -1, 29, 30, 31, 26, -1, -1, 29, 30, 31, + -1, 1388, 1084, -1, -1, -1, 1393, 1394, -1, -1, + 1397, 43, 147, 4, 5, 53, 54, 55, -1, 10, + -1, 53, 54, 55, 15, -1, 17, 18, -1, -1, + -1, 69, -1, 24, -1, -1, 27, -1, -1, -1, + -1, -1, -1, 34, 35, -1, 37, -1, 39, -1, + -1, 89, -1, 44, -1, 46, 191, 1139, 49, -1, + 1142, 52, 9, -1, 1146, -1, -1, -1, 1150, 60, + 17, -1, 63, -1, 65, 66, 67, 68, -1, 26, + -1, -1, 29, 30, 31, 76, 77, -1, 79, 80, + 81, 38, 83, 84, 85, 86, 87, 88, -1, 90, + 91, 92, -1, 17, -1, -1, 53, 54, 55, -1, + -1, -1, 26, 248, -1, 29, 30, 31, 253, -1, + 255, -1, 1204, 258, 259, -1, -1, -1, -1, -1, + 1212, -1, -1, -1, -1, 17, -1, -1, 1220, 53, + 54, 55, -1, -1, 26, 280, 281, 29, 30, 31, + 285, -1, -1, 288, 36, -1, -1, -1, -1, -1, + 295, -1, -1, -1, 299, -1, -1, -1, -1, 304, + -1, 53, 54, 55, 309, -1, -1, -1, -1, 314, + -1, -1, -1, -1, 319, -1, 321, 147, 148, 149, + 325, 151, 152, 153, 154, 155, -1, 332, -1, -1, + 335, -1, -1, -1, -1, -1, -1, -1, 343, 1291, + -1, 1293, 1294, 1295, 1296, -1, 1298, 1299, 1300, 1301, + 1302, -1, 1304, -1, -1, -1, -1, -1, -1, 10, + -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, + -1, -1, -1, -1, -1, 26, 27, -1, 29, 30, + 31, -1, -1, 34, -1, -1, -1, -1, -1, -1, + -1, -1, 203, -1, 205, 46, 207, -1, -1, 210, + -1, 52, 53, 54, 55, -1, -1, -1, -1, -1, + -1, -1, 63, -1, -1, 66, -1, 68, -1, 10, + -1, -1, -1, -1, 429, -1, 431, 18, 79, -1, + 81, 436, 83, -1, 85, -1, 27, -1, -1, -1, + 91, 446, -1, 34, -1, 10, 37, -1, 453, -1, + -1, -1, -1, 18, -1, -1, 461, -1, -1, -1, + -1, 52, 27, -1, -1, -1, -1, -1, -1, 34, + -1, -1, 63, -1, 479, 66, -1, 68, -1, -1, + 485, 46, -1, -1, -1, -1, -1, 52, 79, -1, + 81, -1, 83, -1, 85, -1, -1, -1, 63, -1, + 91, 66, -1, 68, 93, 94, 95, 96, 97, 98, + 99, 100, 101, -1, 79, 520, 81, -1, 83, 524, + 85, -1, -1, -1, -1, -1, 91, -1, -1, -1, + -1, -1, -1, 344, -1, -1, -1, -1, -1, -1, + 351, -1, 353, 354, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, -1, 370, + -1, -1, -1, -1, 375, 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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 631, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 429, -1, 431, -1, -1, -1, -1, 436, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 446, -1, -1, - -1, -1, -1, 454, 453, -1, -1, -1, -1, -1, - -1, -1, 461, 464, -1, -1, -1, -1, -1, -1, - 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 479, -1, -1, -1, -1, 486, 485, -1, -1, -1, + -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 464, -1, 317, 318, -1, 320, -1, + 471, -1, -1, 668, -1, -1, -1, -1, 673, -1, + -1, -1, -1, -1, -1, 486, -1, -1, -1, -1, -1, 492, 493, -1, -1, 496, -1, -1, 499, -1, -1, -1, -1, -1, -1, 506, -1, -1, 509, -1, -1, -1, -1, 514, -1, 516, -1, -1, -1, -1, - -1, 520, -1, -1, 525, 524, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 538, -1, -1, - -1, 542, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 557, -1, -1, -1, + -1, 716, -1, 718, 525, -1, 721, -1, 723, -1, + 725, -1, 727, -1, -1, 730, -1, 538, -1, -1, + -1, 542, -1, 738, -1, -1, 741, -1, 743, -1, + -1, -1, -1, 748, -1, -1, 557, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 568, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 599, -1, -1, -1, -1, -1, 605, -1, -1, -1, 609, -1, - -1, -1, -1, -1, 615, -1, 617, -1, -1, -1, - 621, -1, -1, -1, -1, -1, 627, -1, -1, -1, - -1, -1, 631, 634, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 615, -1, 617, 469, -1, -1, + 621, -1, -1, -1, -1, 477, 627, -1, -1, -1, + 482, -1, -1, 634, -1, -1, -1, 489, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 657, -1, -1, 660, - 661, 662, 663, -1, -1, -1, -1, -1, -1, 668, - -1, -1, -1, 674, 673, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 507, 657, -1, -1, 660, + 661, 662, 663, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 674, -1, -1, -1, -1, -1, -1, -1, -1, 683, -1, 685, -1, -1, 688, -1, 690, -1, 692, -1, -1, -1, -1, -1, 698, -1, -1, + 108, 109, 110, 111, 112, 113, 114, -1, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, -1, 928, 142, 143, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 716, -1, 718, - -1, -1, 721, -1, 723, -1, 725, -1, 727, -1, - -1, 730, -1, -1, -1, -1, -1, -1, -1, 738, - -1, -1, 741, -1, 743, -1, -1, -1, -1, 748, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 770, -1, 772, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 787, -1, 789, -1, -1, -1, -1, -1, -1, 796, -1, 798, -1, 800, - -1, 802, -1, -1, -1, -1, -1, 109, 110, 111, - 112, 113, -1, -1, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, -1, 130, 131, - 132, -1, -1, -1, -1, -1, 837, -1, -1, -1, - -1, -1, -1, -1, 845, -1, -1, -1, -1, -1, + -1, 802, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 666, 667, -1, -1, -1, -1, + 672, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1028, -1, 687, 837, 689, -1, 691, + -1, 693, -1, -1, 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 317, 318, -1, 320, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 192, -1, -1, -1, -1, 197, -1, -1, -1, -1, - -1, -1, -1, -1, 905, -1, -1, -1, -1, 910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 922, -1, -1, -1, -1, -1, -1, -1, 928, + -1, -1, 1097, -1, 905, -1, -1, -1, 1103, 910, + 1105, -1, -1, 1108, -1, -1, -1, -1, -1, -1, + -1, 922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 933, -1, -1, -1, -1, -1, -1, 940, - -1, -1, 943, 944, 945, 946, 947, 948, -1, -1, + 1135, -1, 943, 944, 945, 946, 947, 948, -1, -1, 951, -1, 953, -1, -1, 956, -1, -1, -1, -1, 961, -1, 963, 964, 965, -1, -1, -1, -1, -1, - -1, 972, 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, -1, 469, -1, -1, -1, -1, -1, -1, - -1, 477, -1, -1, -1, -1, 482, -1, 1027, -1, - -1, -1, -1, 489, 490, 1036, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, -1, - 1051, 507, 1053, 355, 356, -1, -1, -1, -1, 1058, - -1, -1, -1, -1, -1, -1, -1, -1, 1069, 1070, - -1, -1, -1, -1, 376, 377, -1, -1, -1, -1, - -1, -1, -1, 385, -1, -1, -1, -1, 1089, -1, - -1, -1, -1, 1094, -1, 397, 1095, 1098, 400, -1, - -1, -1, 1101, -1, 1103, 407, -1, 1106, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1133, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1160, - -1, 1162, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1177, -1, - 1179, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1195, -1, -1, -1, - 1201, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 666, 667, -1, -1, 1215, -1, 672, -1, -1, -1, - -1, -1, 1223, -1, 1225, 1226, -1, 529, 530, -1, - -1, 687, -1, 689, -1, 691, -1, 693, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 550, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 567, -1, -1, -1, -1, - 1271, -1, -1, -1, -1, -1, -1, 1278, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1290, -1, 1294, -1, 1296, -1, -1, -1, -1, - -1, -1, -1, -1, 606, -1, -1, -1, 610, 1310, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1321, -1, -1, -1, -1, -1, -1, 1328, - -1, -1, -1, -1, -1, -1, -1, 1336, -1, -1, + -1, 972, -1, -1, -1, -1, -1, -1, 1173, -1, + 1175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1191, -1, -1, -1, + -1, 1002, -1, -1, -1, -1, 858, 859, 860, 861, + -1, 863, 864, -1, -1, -1, -1, -1, -1, -1, + -1, 873, -1, 875, 876, -1, -1, -1, -1, -1, + -1, 883, 884, -1, -1, -1, 1037, -1, -1, -1, + -1, -1, -1, -1, 896, -1, -1, -1, -1, -1, + -1, 1052, -1, 1054, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1357, 1358, -1, -1, - -1, 108, 109, 110, 111, 112, 113, 114, -1, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, -1, 1395, 142, 143, 144, 145, 146, - -1, 1402, 858, 859, 860, 861, -1, 863, 864, -1, - -1, -1, -1, -1, -1, -1, -1, 873, -1, 875, - 876, -1, -1, 1424, -1, -1, -1, 883, 884, -1, + 1071, 1072, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 896, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 761, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 781, - -1, 783, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 820, -1, - -1, 823, -1, -1, -1, -1, -1, -1, -1, -1, - 832, -1, -1, -1, -1, -1, 838, -1, -1, 841, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1011, -1, -1, -1, -1, - 1016, 1017, -1, 1019, -1, -1, -1, -1, -1, 1025, - -1, -1, 1028, 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, -1, -1, -1, -1, -1, -1, -1, + 1091, 1286, -1, -1, -1, 1096, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1317, -1, -1, -1, -1, -1, -1, 1324, + -1, -1, -1, -1, -1, -1, -1, 1332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1158, -1, 1160, + 1012, -1, -1, -1, -1, 1017, 1018, -1, 1020, -1, + -1, -1, -1, -1, 1026, -1, -1, 1029, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1211, -1, -1, -1, -1, -1, -1, -1, 1219, -1, + 1221, 1222, 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, -1, -1, -1, -1, 1267, -1, -1, -1, + -1, -1, -1, 1274, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1290, + -1, 1292, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1306, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 989, -1, -1, - -1, -1, -1, -1, -1, -1, 998, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1186, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1201, + -1, -1, 1353, 1354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1190, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1391, -1, -1, -1, -1, -1, -1, 1398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1073, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1420, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1096, -1, -1, -1, -1, -1, + 1282, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1310, -1, + -1, 1313, 1314, -1, 1316, -1, -1, -1, 1320, 1321, + -1, 1323, -1, 1325, -1, -1, 1328, 1329, -1, 1331, + -1, 1333, -1, 1335, 1336, -1, 1338, 1339, -1, 1341, + 1342, -1, 1344, -1, 1346, 1347, -1, 1349, -1, 1351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1286, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1143, -1, -1, 1146, -1, -1, -1, 1150, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1314, 1161, - -1, 1317, 1318, -1, 1320, -1, -1, -1, 1324, 1325, - -1, 1327, -1, 1329, -1, -1, 1332, 1333, -1, 1335, - -1, 1337, -1, 1339, 1340, -1, 1342, 1343, -1, 1345, - 1346, -1, 1348, -1, 1350, 1351, -1, 1353, -1, 1355, - -1, -1, -1, -1, 1206, 1207, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1394, -1, - 1396, 1397, -1, 1399, 1400, 1401, -1, 1403, 1404, 1405, - 1406, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1423, -1, 1425 + -1, -1, -1, -1, -1, -1, -1, -1, 1390, -1, + 1392, 1393, -1, 1395, 1396, 1397, -1, 1399, 1400, 1401, + 1402, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1419, -1, 1421 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2030,7 +1977,7 @@ static const yytype_uint16 yystos[] = 238, 205, 361, 268, 418, 372, 268, 418, 372, 268, 418, 372, 180, 184, 186, 205, 414, 412, 205, 417, 418, 372, 467, 180, 473, 205, 487, 490, 25, 422, - 423, 490, 47, 510, 515, 167, 180, 204, 204, 202, + 423, 490, 47, 510, 514, 167, 180, 204, 204, 202, 202, 308, 311, 204, 309, 202, 204, 204, 315, 204, 204, 204, 328, 202, 202, 203, 204, 204, 204, 204, 202, 204, 204, 203, 204, 204, 204, 345, 204, 259, @@ -2078,49 +2025,49 @@ static const yytype_uint16 yystos[] = 198, 194, 259, 209, 204, 209, 203, 204, 209, 204, 209, 209, 203, 204, 209, 209, 204, 209, 204, 204, 203, 482, 482, 204, 207, 202, 207, 204, 204, 203, - 203, 204, 204, 512, 203, 203, 203, 203, 203, 203, - 203, 238, 425, 429, 203, 172, 267, 267, 203, 373, - 203, 7, 11, 12, 13, 238, 256, 257, 386, 203, - 203, 203, 180, 195, 196, 203, 218, 220, 223, 229, - 234, 229, 234, 234, 234, 169, 226, 169, 233, 184, - 205, 237, 494, 167, 385, 205, 431, 204, 383, 429, - 513, 516, 204, 204, 204, 204, 259, 419, 419, 259, - 259, 259, 259, 202, 259, 204, 168, 198, 203, 204, - 204, 204, 204, 209, 209, 209, 209, 204, 204, 230, - 203, 207, 203, 204, 330, 507, 202, 204, 514, 8, - 282, 284, 281, 284, 282, 283, 284, 203, 203, 266, - 281, 180, 197, 198, 223, 229, 234, 229, 234, 234, - 234, 169, 227, 260, 203, 7, 11, 12, 13, 14, - 69, 426, 427, 428, 203, 202, 384, 208, 429, 516, - 203, 204, 272, 202, 204, 270, 202, 207, 204, 275, - 202, 204, 204, 392, 198, 204, 204, 204, 209, 204, - 330, 202, 504, 204, 514, 514, 7, 11, 12, 13, - 14, 69, 89, 208, 252, 253, 254, 255, 261, 265, - 305, 205, 285, 208, 281, 305, 285, 208, 283, 285, - 267, 36, 208, 305, 393, 394, 229, 234, 234, 234, - 169, 228, 203, 266, 203, 385, 202, 202, 204, 204, - 270, 207, 204, 275, 204, 259, 204, 207, 207, 202, - 204, 203, 204, 262, 204, 505, 259, 266, 266, 208, - 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 142, 143, 144, 145, 146, 298, 107, 115, 140, - 141, 286, 289, 298, 107, 115, 140, 141, 291, 294, - 298, 203, 393, 205, 395, 234, 267, 203, 208, 494, - 507, 203, 203, 204, 262, 204, 296, 204, 204, 204, - 204, 203, 204, 204, 204, 204, 204, 203, 204, 207, - 330, 259, 207, 202, 267, 203, 22, 238, 261, 297, - 303, 304, 203, 20, 238, 253, 287, 299, 300, 303, - 287, 21, 238, 253, 288, 301, 302, 303, 288, 238, - 253, 290, 303, 238, 292, 299, 303, 287, 238, 293, - 301, 303, 293, 238, 295, 303, 203, 504, 259, 259, - 259, 204, 259, 202, 259, 259, 204, 259, 202, 204, - 259, 259, 259, 204, 259, 202, 204, 259, 259, 259, - 204, 259, 259, 204, 259, 259, 259, 204, 259, 259, - 259, 259, 203, 203, 261, 180, 253, 303, 169, 253, - 253, 303, 169, 253, 253, 303, 303, 505, 259, 203, - 259, 204, 259, 204, 259, 259, 204, 259, 203, 259, - 259, 259, 259, 253, 258, 253, 259, 203, 259 + 203, 204, 513, 204, 512, 203, 203, 203, 203, 203, + 203, 203, 238, 425, 429, 203, 172, 267, 267, 203, + 373, 203, 7, 11, 12, 13, 238, 256, 257, 386, + 203, 203, 203, 180, 195, 196, 203, 218, 220, 223, + 229, 234, 229, 234, 234, 234, 169, 226, 169, 233, + 184, 205, 237, 494, 167, 385, 205, 431, 204, 208, + 383, 429, 515, 203, 204, 204, 204, 204, 259, 419, + 419, 259, 259, 259, 259, 202, 259, 204, 168, 198, + 203, 204, 204, 204, 204, 209, 209, 209, 209, 204, + 204, 230, 203, 207, 203, 204, 330, 507, 202, 513, + 513, 8, 282, 284, 281, 284, 282, 283, 284, 203, + 203, 266, 281, 180, 197, 198, 223, 229, 234, 229, + 234, 234, 234, 169, 227, 260, 203, 7, 11, 12, + 13, 14, 69, 426, 427, 428, 203, 202, 384, 204, + 272, 202, 204, 270, 202, 207, 204, 275, 202, 204, + 204, 392, 198, 204, 204, 204, 209, 204, 330, 202, + 504, 204, 7, 11, 12, 13, 14, 69, 89, 208, + 252, 253, 254, 255, 261, 265, 305, 205, 285, 208, + 281, 305, 285, 208, 283, 285, 267, 36, 208, 305, + 393, 394, 229, 234, 234, 234, 169, 228, 203, 266, + 203, 385, 202, 202, 204, 204, 270, 207, 204, 275, + 204, 259, 204, 207, 207, 202, 204, 203, 204, 262, + 204, 505, 259, 266, 266, 208, 108, 109, 110, 111, + 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 142, 143, 144, + 145, 146, 298, 107, 115, 140, 141, 286, 289, 298, + 107, 115, 140, 141, 291, 294, 298, 203, 393, 205, + 395, 234, 267, 203, 208, 494, 507, 203, 203, 204, + 262, 204, 296, 204, 204, 204, 204, 203, 204, 204, + 204, 204, 204, 203, 204, 207, 330, 259, 207, 202, + 267, 203, 22, 238, 261, 297, 303, 304, 203, 20, + 238, 253, 287, 299, 300, 303, 287, 21, 238, 253, + 288, 301, 302, 303, 288, 238, 253, 290, 303, 238, + 292, 299, 303, 287, 238, 293, 301, 303, 293, 238, + 295, 303, 203, 504, 259, 259, 259, 204, 259, 202, + 259, 259, 204, 259, 202, 204, 259, 259, 259, 204, + 259, 202, 204, 259, 259, 259, 204, 259, 259, 204, + 259, 259, 259, 204, 259, 259, 259, 259, 203, 203, + 261, 180, 253, 303, 169, 253, 253, 303, 169, 253, + 253, 303, 303, 505, 259, 203, 259, 204, 259, 204, + 259, 259, 204, 259, 203, 259, 259, 259, 259, 253, + 258, 253, 259, 203, 259 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -2195,7 +2142,7 @@ static const yytype_uint16 yyr1[] = 497, 498, 499, 499, 499, 499, 499, 500, 501, 502, 502, 503, 504, 504, 504, 504, 505, 505, 505, 505, 506, 507, 508, 509, 510, 511, 511, 512, 513, 513, - 514, 514, 514, 514, 515, 516 + 513, 513, 514, 515 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2269,8 +2216,8 @@ static const yytype_uint8 yyr2[] = 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 1, 6, 0, 3, 3, 3, 2, 1, 4, 3, 1, 16, 1, 1, 1, 1, 0, 6, 3, 2, - 1, 1, 9, 1, 4, 3, 1, 6, 1, 1, - 0, 3, 3, 2, 1, 7 + 1, 1, 9, 1, 4, 3, 1, 4, 0, 3, + 3, 2, 1, 7 }; diff --git a/src/wkt2_grammar.y b/src/wkt2_grammar.y index fc2e8bf0..b17361e2 100644 --- a/src/wkt2_grammar.y +++ b/src/wkt2_grammar.y @@ -1602,12 +1602,12 @@ abridged_coordinate_transformation_next: abridged_coordinate_transformation_end: wkt_separator operation_method - wkt_separator - abridged_parameter_or_parameter_file +// At least one parameter required by WKT2. But relax that to allow things like METHOD["PROJ-based operation method: +proj=...."] +// wkt_separator abridged_parameter_or_parameter_file opt_end_abridged_coordinate_transformation right_delimiter -abridged_parameter_or_parameter_file: abridged_transformation_parameter | operation_parameter_file +//abridged_parameter_or_parameter_file: abridged_transformation_parameter | operation_parameter_file opt_end_abridged_coordinate_transformation: | wkt_separator abridged_transformation_parameter opt_end_abridged_coordinate_transformation diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index b40ebd5e..74bddee8 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -5564,3 +5564,67 @@ TEST(operation, "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); } + +// --------------------------------------------------------------------------- + +TEST(operation, export_of_boundCRS_with_proj_string_method) { + + auto wkt = + "BOUNDCRS[\n" + " SOURCECRS[\n" + " GEOGCRS[\"unknown\",\n" + " DATUM[\"Unknown based on GRS80 ellipsoid\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7019]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]],\n" + " TARGETCRS[\n" + " GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ID[\"EPSG\",4326]]],\n" + " ABRIDGEDTRANSFORMATION[\"Transformation from unknown to WGS84\",\n" + " METHOD[\"PROJ-based operation method: +proj=pipeline +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap " + "+order=2,1 " + "+step +proj=cart +ellps=GRS80 +step +proj=helmert " + "+convention=coordinate_frame +exact +step +inv +proj=cart " + "+ellps=WGS84 " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg\"]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto boundCRS = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->transformation()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=axisswap +order=2,1 " + "+step +proj=cart +ellps=GRS80 " + "+step +proj=helmert +convention=coordinate_frame +exact " + "+step +inv +proj=cart +ellps=WGS84 " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); +} -- cgit v1.2.3