diff --git a/ast/options.go b/ast/options.go index 33775219..9338d307 100644 --- a/ast/options.go +++ b/ast/options.go @@ -343,22 +343,30 @@ func NewCompactOptionsNode(openBracket *RuneNode, opts []*OptionNode, commas []* if len(opts) == 0 && len(commas) != 0 { panic("opts is empty but commas is not") } - if len(opts) > 0 && len(commas) != len(opts)-1 { + if len(opts) != len(commas) && len(opts) != len(commas)+1 { panic(fmt.Sprintf("%d opts requires %d commas, not %d", len(opts), len(opts)-1, len(commas))) } - children := make([]Node, 0, len(opts)*2+1) + children := make([]Node, 0, len(opts)+len(commas)+2) children = append(children, openBracket) - for i, opt := range opts { - if i > 0 { - if commas[i-1] == nil { - panic(fmt.Sprintf("commas[%d] is nil", i-1)) + if len(opts) > 0 { + for i, opt := range opts { + if i > 0 { + if commas[i-1] == nil { + panic(fmt.Sprintf("commas[%d] is nil", i-1)) + } + children = append(children, commas[i-1]) + } + if opt == nil { + panic(fmt.Sprintf("opts[%d] is nil", i)) } - children = append(children, commas[i-1]) + children = append(children, opt) } - if opt == nil { - panic(fmt.Sprintf("opts[%d] is nil", i)) + if len(opts) == len(commas) { // Add the erroneous, but tolerated trailing comma. + if commas[len(commas)-1] == nil { + panic(fmt.Sprintf("commas[%d] is nil", len(commas)-1)) + } + children = append(children, commas[len(commas)-1]) } - children = append(children, opt) } children = append(children, closeBracket) diff --git a/parser/parser_test.go b/parser/parser_test.go index aacbe694..0845c30e 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -82,12 +82,29 @@ func TestJunkParse(t *testing.T) { } } +type parseErrorTestCase struct { + Error string + NoError string +} + +func runParseErrorTestCases(t *testing.T, testCases map[string]parseErrorTestCase, expected string) { + for name, testCase := range testCases { + name, testCase := name, testCase + t.Run(name, func(t *testing.T) { + t.Parallel() + errHandler := reporter.NewHandler(nil) + protoName := fmt.Sprintf("%s.proto", name) + _, err := Parse(protoName, strings.NewReader(testCase.NoError), errHandler) + require.NoError(t, err) + _, err = Parse(protoName, strings.NewReader(testCase.Error), errHandler) + require.ErrorContains(t, err, expected) + }) + } +} + func TestLenientParse_SemicolonLess(t *testing.T) { t.Parallel() - inputs := map[string]struct { - Error string - NoError string - }{ + inputs := map[string]parseErrorTestCase{ "package": { Error: `syntax = "proto3"; package foo @@ -353,26 +370,12 @@ func TestLenientParse_SemicolonLess(t *testing.T) { }`, }, } - for name, input := range inputs { - name, input := name, input - t.Run(name, func(t *testing.T) { - t.Parallel() - errHandler := reporter.NewHandler(nil) - protoName := fmt.Sprintf("%s.proto", name) - _, err := Parse(protoName, strings.NewReader(input.NoError), errHandler) - require.NoError(t, err) - _, err = Parse(protoName, strings.NewReader(input.Error), errHandler) - require.ErrorContains(t, err, "expected ';'") - }) - } + runParseErrorTestCases(t, inputs, "expected ';'") } func TestLenientParse_EmptyCompactOptions(t *testing.T) { t.Parallel() - inputs := map[string]struct { - Error string - NoError string - }{ + inputs := map[string]parseErrorTestCase{ "field-options": { Error: `syntax = "proto3"; message Foo { @@ -394,26 +397,12 @@ func TestLenientParse_EmptyCompactOptions(t *testing.T) { }`, }, } - for name, input := range inputs { - name, input := name, input - t.Run(name, func(t *testing.T) { - t.Parallel() - errHandler := reporter.NewHandler(nil) - protoName := fmt.Sprintf("%s.proto", name) - _, err := Parse(protoName, strings.NewReader(input.NoError), errHandler) - require.NoError(t, err) - _, err = Parse(protoName, strings.NewReader(input.Error), errHandler) - require.ErrorContains(t, err, "compact options must have at least one option") - }) - } + runParseErrorTestCases(t, inputs, "compact options must have at least one option") } func TestLenientParse_EmptyCompactValue(t *testing.T) { t.Parallel() - inputs := map[string]struct { - Error string - NoError string - }{ + inputs := map[string]parseErrorTestCase{ "field-options": { Error: `syntax = "proto2"; message Foo { @@ -435,18 +424,24 @@ func TestLenientParse_EmptyCompactValue(t *testing.T) { }`, }, } - for name, input := range inputs { - name, input := name, input - t.Run(name, func(t *testing.T) { - t.Parallel() - errHandler := reporter.NewHandler(nil) - protoName := fmt.Sprintf("%s.proto", name) - _, err := Parse(protoName, strings.NewReader(input.NoError), errHandler) - require.NoError(t, err) - _, err = Parse(protoName, strings.NewReader(input.Error), errHandler) - require.ErrorContains(t, err, "compact option must have a value") - }) + runParseErrorTestCases(t, inputs, "compact option must have a value") +} + +func TestLenientParse_OptionsTrailingComma(t *testing.T) { + t.Parallel() + inputs := map[string]parseErrorTestCase{ + "field-options": { + Error: `syntax = "proto3"; + message Foo { + int32 bar = 1 [default=1,]; + }`, + NoError: `syntax = "proto3"; + message Foo { + int32 bar = 1 [default=1]; + }`, + }, } + runParseErrorTestCases(t, inputs, "unexpected ','") } func TestSimpleParse(t *testing.T) { diff --git a/parser/proto.y b/parser/proto.y index e4d99fad..2ad2cdef 100644 --- a/parser/proto.y +++ b/parser/proto.y @@ -79,8 +79,8 @@ import ( %type importDecl %type packageDecl %type compactOption oneofOptionDecl -%type optionDecl -%type compactOptionDecls +%type optionDecl compactOptionEntry compactOptionFinal +%type compactOptionDecls compactOptionLeadingDecls %type extensionName messageLiteralFieldName %type optionName %type compactOptions @@ -604,15 +604,36 @@ compactOptions : '[' compactOptionDecls ']' { $$ = ast.NewCompactOptionsNode($1, nil, nil, $2) } -compactOptionDecls : compactOption { - $$ = &compactOptionSlices{options: []*ast.OptionNode{$1}} +compactOptionDecls : compactOptionFinal { + $$ = &compactOptionSlices{options: []*ast.OptionNode{$1.Node}, commas: $1.Runes} } - | compactOptionDecls ',' compactOption { - $1.options = append($1.options, $3) - $1.commas = append($1.commas, $2) + | compactOptionLeadingDecls compactOptionFinal { + $1.options = append($1.options, $2.Node) + $1.commas = append($1.commas, $2.Runes...) + $$ = $1 + } + +compactOptionLeadingDecls : compactOptionEntry { + $$ = &compactOptionSlices{options: []*ast.OptionNode{$1.Node}, commas: $1.Runes} + } + | compactOptionLeadingDecls compactOptionEntry { + $1.options = append($1.options, $2.Node) + $1.commas = append($1.commas, $2.Runes...) $$ = $1 } +compactOptionFinal : compactOption { + $$ = newNodeWithRunes($1) + } + | compactOptionEntry { + protolex.(*protoLex).Error("unexpected ','") + $$ = $1 + } + +compactOptionEntry : compactOption ',' { + $$ = newNodeWithRunes($1, $2) + } + compactOption : optionName '=' optionValue { optName := ast.NewOptionNameNode($1.refs, $1.dots) $$ = ast.NewCompactOptionNode(optName, $2, $3) diff --git a/parser/proto.y.go b/parser/proto.y.go index bff1f470..fee1ea5b 100644 --- a/parser/proto.y.go +++ b/parser/proto.y.go @@ -237,387 +237,395 @@ var protoExca = [...]int16{ 1, 7, -2, 0, -1, 108, - 56, 212, + 56, 217, -2, 0, -1, 129, - 56, 192, + 56, 197, -2, 0, -1, 131, - 56, 181, + 56, 186, -2, 0, -1, 133, - 56, 213, + 56, 218, -2, 0, -1, 187, - 56, 225, + 56, 230, -2, 0, -1, 192, 56, 67, 62, 67, -2, 0, -1, 205, - 56, 193, + 56, 198, -2, 0, -1, 262, - 56, 182, + 56, 187, -2, 0, -1, 368, - 56, 226, + 56, 231, -2, 0, -1, 449, - 56, 128, + 56, 133, -2, 0, - -1, 505, - 56, 129, + -1, 503, + 69, 124, + -2, 121, + -1, 508, + 56, 134, -2, 0, - -1, 686, - 56, 236, + -1, 635, + 69, 124, + -2, 122, + -1, 690, + 56, 241, -2, 0, - -1, 696, - 56, 237, + -1, 700, + 56, 242, -2, 0, } const protoPrivate = 57344 -const protoLast = 1895 +const protoLast = 1904 var protoAct = [...]int16{ - 129, 7, 128, 7, 7, 569, 18, 697, 385, 484, - 500, 114, 428, 92, 501, 479, 506, 91, 445, 412, - 413, 117, 396, 189, 40, 369, 115, 426, 395, 224, - 263, 317, 21, 20, 32, 34, 19, 98, 191, 39, - 101, 85, 134, 138, 87, 206, 36, 623, 490, 436, - 692, 86, 89, 90, 439, 94, 102, 381, 120, 99, - 100, 631, 622, 447, 102, 438, 386, 489, 444, 630, - 621, 387, 571, 625, 9, 488, 446, 656, 645, 440, - 675, 652, 414, 447, 127, 120, 480, 447, 414, 447, - 447, 447, 407, 386, 669, 379, 380, 487, 560, 102, - 111, 112, 120, 378, 653, 472, 105, 109, 131, 9, - 386, 187, 116, 471, 9, 188, 435, 455, 451, 566, - 639, 704, 453, 377, 664, 632, 446, 113, 119, 125, - 710, 376, 104, 104, 9, 419, 213, 678, 264, 103, - 405, 102, 415, 671, 365, 196, 708, 104, 415, 126, - 701, 695, 694, 687, 683, 9, 633, 674, 366, 374, - 367, 270, 210, 208, 364, 313, 209, 261, 204, 449, - 110, 108, 107, 218, 106, 96, 314, 5, 6, 96, - 96, 9, 571, 635, 315, 31, 666, 665, 493, 492, - 23, 476, 475, 450, 370, 443, 421, 410, 24, 13, - 12, 25, 26, 572, 502, 390, 473, 372, 383, 448, - 96, 388, 213, 203, 201, 200, 198, 196, 699, 26, - 682, 15, 9, 681, 9, 202, 627, 199, 97, 95, - 26, 375, 28, 27, 29, 30, 35, 626, 210, 208, - 406, 503, 209, 568, 394, 403, 398, 399, 404, 218, - 393, 391, 400, 373, 567, 556, 33, 8, 397, 494, - 478, 474, 408, 37, 38, 33, 685, 696, 371, 264, + 129, 7, 128, 7, 7, 572, 18, 701, 385, 484, + 115, 114, 428, 92, 91, 504, 479, 500, 509, 503, + 413, 412, 396, 189, 40, 426, 369, 445, 224, 263, + 395, 117, 317, 21, 191, 20, 19, 98, 134, 39, + 101, 87, 85, 138, 32, 34, 206, 633, 439, 436, + 102, 86, 89, 90, 102, 94, 36, 381, 120, 438, + 625, 696, 574, 628, 444, 489, 386, 9, 624, 99, + 100, 387, 446, 488, 447, 661, 650, 447, 636, 447, + 679, 626, 447, 414, 490, 440, 657, 414, 447, 447, + 127, 480, 407, 673, 487, 563, 120, 379, 380, 102, + 111, 112, 120, 105, 386, 378, 472, 109, 131, 9, + 386, 187, 116, 9, 471, 188, 435, 455, 451, 658, + 569, 453, 377, 668, 637, 103, 446, 113, 119, 125, + 376, 104, 104, 104, 9, 644, 213, 419, 264, 405, + 365, 102, 714, 415, 712, 196, 126, 415, 705, 699, + 698, 691, 687, 9, 638, 678, 670, 374, 366, 367, + 270, 313, 261, 210, 364, 208, 209, 204, 708, 682, + 675, 449, 314, 218, 110, 108, 107, 106, 5, 6, + 96, 96, 96, 9, 574, 640, 315, 31, 669, 493, + 23, 492, 476, 475, 370, 450, 443, 421, 24, 410, + 13, 25, 26, 12, 575, 390, 505, 372, 383, 473, + 448, 388, 213, 203, 201, 686, 703, 196, 685, 26, + 630, 15, 629, 9, 571, 202, 570, 375, 26, 9, + 97, 95, 28, 27, 29, 30, 35, 559, 397, 210, + 406, 208, 209, 506, 394, 494, 398, 399, 404, 218, + 478, 393, 391, 373, 400, 403, 200, 198, 33, 8, + 474, 96, 408, 33, 689, 37, 38, 700, 199, 264, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 4, 186, 368, 10, 11, 22, 132, 133, - 265, 403, 270, 409, 404, 130, 262, 211, 411, 266, - 216, 402, 401, 504, 505, 205, 222, 215, 212, 509, - 136, 214, 135, 508, 416, 207, 193, 192, 434, 481, - 574, 512, 139, 219, 575, 318, 514, 143, 225, 268, - 577, 320, 516, 420, 145, 228, 457, 382, 384, 429, - 118, 417, 418, 195, 498, 507, 17, 16, 14, 3, - 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 468, 469, 4, 371, 186, 10, 11, 368, 22, 132, + 133, 270, 409, 265, 404, 130, 262, 211, 411, 266, + 216, 403, 402, 401, 507, 508, 205, 222, 215, 212, + 512, 136, 214, 135, 416, 511, 207, 193, 192, 434, + 481, 577, 515, 139, 219, 578, 318, 517, 143, 225, + 268, 580, 320, 420, 519, 145, 228, 457, 382, 384, + 429, 417, 418, 118, 195, 501, 498, 510, 502, 17, + 16, 14, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, 0, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 422, 0, 0, 0, 424, 0, 0, 0, 425, 0, - 437, 0, 452, 454, 0, 119, 119, 427, 427, 431, + 422, 427, 427, 0, 0, 424, 0, 0, 425, 0, + 437, 0, 452, 454, 0, 119, 119, 431, 0, 0, 432, 196, 0, 0, 0, 0, 0, 441, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 456, 470, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 486, 477, 495, 496, 0, 0, 0, - 0, 0, 557, 491, 0, 119, 0, 485, 0, 0, + 0, 485, 0, 486, 477, 495, 496, 0, 0, 0, + 0, 0, 560, 491, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 497, - 0, 561, 86, 564, 0, 558, 0, 0, 0, 0, - 559, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 0, 563, 0, 0, 565, 628, 0, 570, 0, 0, - 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, - 0, 0, 634, 0, 0, 0, 636, 0, 0, 640, - 0, 0, 0, 0, 0, 0, 86, 637, 638, 0, + 0, 564, 86, 567, 0, 0, 0, 0, 0, 0, + 562, 0, 0, 0, 0, 561, 0, 0, 0, 0, + 0, 0, 0, 566, 568, 631, 0, 0, 565, 0, + 0, 0, 627, 0, 0, 0, 573, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, + 0, 635, 632, 0, 0, 0, 86, 639, 0, 0, + 641, 0, 645, 0, 0, 0, 0, 0, 0, 86, + 642, 643, 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, 641, 0, 0, - 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 647, 642, 649, 0, 643, 0, - 0, 0, 0, 0, 0, 0, 646, 648, 650, 0, - 654, 651, 0, 0, 0, 0, 0, 0, 0, 0, + 646, 0, 0, 0, 0, 0, 649, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 652, 648, 654, + 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, + 0, 656, 655, 659, 0, 0, 0, 0, 651, 653, 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, 658, 0, - 660, 0, 655, 0, 663, 486, 0, 0, 0, 0, - 0, 116, 661, 668, 662, 657, 659, 119, 670, 485, - 0, 673, 0, 0, 672, 0, 86, 119, 0, 677, - 679, 0, 0, 0, 667, 0, 0, 0, 0, 0, - 0, 0, 0, 116, 684, 686, 680, 0, 676, 0, - 0, 688, 0, 0, 0, 0, 689, 690, 700, 119, - 0, 0, 0, 698, 0, 703, 705, 702, 0, 0, - 691, 693, 707, 698, 706, 0, 483, 709, 33, 124, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 663, 0, 665, 0, 660, 485, 0, 486, 667, + 0, 0, 0, 0, 0, 0, 116, 0, 672, 666, + 119, 0, 0, 674, 0, 0, 677, 662, 664, 676, + 0, 0, 119, 0, 681, 683, 0, 0, 0, 671, + 0, 0, 0, 0, 0, 0, 0, 116, 688, 690, + 684, 0, 0, 680, 0, 692, 0, 0, 0, 0, + 693, 694, 704, 119, 0, 0, 0, 702, 0, 707, + 709, 706, 0, 0, 0, 0, 711, 702, 710, 0, + 0, 713, 0, 695, 697, 483, 0, 33, 124, 121, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 120, 0, + 0, 0, 0, 0, 0, 0, 386, 123, 122, 0, + 0, 0, 482, 33, 124, 121, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, + 0, 0, 386, 123, 122, 0, 0, 430, 33, 124, 121, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 386, 123, 122, - 0, 0, 0, 482, 33, 124, 121, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 0, 0, 0, 0, 120, 0, 0, 0, 0, - 0, 0, 0, 386, 123, 122, 0, 0, 430, 33, - 124, 121, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, - 120, 0, 0, 0, 0, 0, 0, 0, 386, 123, - 122, 33, 124, 121, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, - 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, - 0, 123, 122, 41, 42, 43, 44, 45, 46, 47, + 33, 124, 121, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 194, 88, 0, 0, 499, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 433, 0, 194, 0, 0, 0, 197, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 0, 0, 0, 0, 0, 190, 0, 0, - 0, 0, 0, 0, 0, 194, 0, 0, 0, 197, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 414, 197, 41, 42, 43, 44, 45, 46, 47, 48, + 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, + 123, 122, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 415, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, + 194, 88, 0, 0, 499, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 93, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 573, 620, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 576, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 392, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 0, 0, 0, 0, 0, 217, 0, - 0, 0, 319, 229, 230, 231, 232, 233, 234, 235, - 26, 236, 237, 238, 239, 142, 141, 140, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 0, 221, 227, 220, 255, 256, 223, - 28, 27, 29, 257, 258, 259, 260, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 226, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 316, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 0, 0, 0, 0, 0, 137, 0, 0, 0, - 319, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 142, 141, 140, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 0, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 0, 0, 0, 0, 0, - 510, 0, 0, 0, 144, 517, 518, 519, 520, 521, - 522, 523, 511, 524, 525, 526, 527, 0, 0, 0, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 513, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 0, - 0, 0, 0, 0, 0, 0, 33, 397, 515, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 267, 0, 0, 0, 0, 271, 272, - 273, 274, 275, 276, 277, 26, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 269, 306, 307, 308, 309, 310, - 311, 312, 389, 0, 0, 0, 0, 41, 42, 43, + 433, 0, 194, 0, 0, 0, 197, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 84, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 0, 0, 0, 0, 194, 0, 0, 0, 197, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 414, + 197, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, + 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 93, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, + 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 576, 623, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 579, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 392, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 0, 0, 0, 0, 0, 217, 0, 0, + 0, 319, 229, 230, 231, 232, 233, 234, 235, 26, + 236, 237, 238, 239, 142, 141, 140, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 0, 221, 227, 220, 255, 256, 223, 28, + 27, 29, 257, 258, 259, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 226, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 316, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 0, 0, 0, 0, 0, 137, 0, 0, 0, 319, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 142, 141, 140, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 0, 0, 0, 0, 0, 513, + 0, 0, 0, 144, 520, 521, 522, 523, 524, 525, + 526, 514, 527, 528, 529, 530, 0, 0, 0, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 516, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, 558, 0, 0, + 0, 0, 0, 0, 0, 33, 397, 518, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 267, 0, 0, 0, 0, 271, 272, 273, + 274, 275, 276, 277, 26, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 269, 306, 307, 308, 309, 310, 311, + 312, 389, 0, 0, 0, 0, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, } var protoPact = [...]int16{ - 169, -1000, 128, 128, -1000, 148, 147, 188, 132, -1000, - -1000, -1000, 261, 261, 188, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 252, 1844, 1264, 1844, 1844, 1324, - 1844, -1000, 176, -1000, 175, -1000, 171, 261, 261, 81, + 170, -1000, 130, 130, -1000, 151, 148, 188, 134, -1000, + -1000, -1000, 259, 259, 188, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 254, 1853, 1273, 1853, 1853, 1333, + 1853, -1000, 178, -1000, 177, -1000, 176, 259, 259, 81, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 87, -1000, -1000, 1324, 119, - 117, 116, 39, 1844, 115, -1000, -1000, -1000, -1000, 171, - 171, -1000, 1844, 897, 1264, 17, 128, 128, 1594, 39, - 128, -1000, -1000, -1000, 128, -1000, -1000, 206, -1000, -1000, - 1081, -1000, 210, 208, -1000, -1000, -1000, -1000, 112, 1486, - 111, 1751, 109, 1594, -1000, -1000, -1000, 131, 1540, 1844, - -1000, -1000, -1000, 84, 1844, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 73, -1000, -1000, 1333, 122, + 121, 120, 39, 1853, 119, -1000, -1000, -1000, -1000, 176, + 176, -1000, 1853, 906, 1273, 23, 130, 130, 1603, 39, + 130, -1000, -1000, -1000, 130, -1000, -1000, 257, -1000, -1000, + 1090, -1000, 251, 208, -1000, -1000, -1000, -1000, 111, 1495, + 106, 1760, 105, 1603, -1000, -1000, -1000, 133, 1549, 1853, + -1000, -1000, -1000, 80, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 104, 205, -1000, 103, - -1000, -1000, 1143, 70, 42, 3, -1000, 1800, -1000, -1000, - -1000, -1000, -1000, -1000, 128, 1486, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1432, 1844, - 253, 1844, 1844, 1702, -1000, 80, 1844, 29, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 103, 205, -1000, 101, + -1000, -1000, 1152, 69, 44, 3, -1000, 1809, -1000, -1000, + -1000, -1000, -1000, -1000, 130, 1495, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1441, 1853, + 233, 1853, 1853, 1711, -1000, 79, 1853, 29, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 128, 1751, -1000, -1000, -1000, -1000, -1000, 145, 1205, + -1000, 130, 1760, -1000, -1000, -1000, -1000, -1000, 147, 1214, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 128, -1000, -1000, 1844, 1844, 75, 1844, + -1000, -1000, -1000, 130, -1000, -1000, 1853, 1853, 77, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 144, 1844, 39, 128, 205, -1000, - -1000, -1000, -1000, 1844, -1000, -1000, -1000, -1000, -1000, -1000, - 770, 770, -1000, -1000, -1000, -1000, 1019, 47, -4, 10, - -1000, -1000, 1844, 1844, 143, 15, -1000, 168, 114, 141, - 65, 61, 56, 206, -1000, 1844, 39, 246, -1000, -1000, - 83, 52, -1000, 165, -1000, 256, -1000, 140, 139, 1844, - 39, 255, -1000, -1000, -1000, 20, -1000, -1000, -1000, -1000, - 704, -1000, 35, -1000, 6, -1000, -21, -1000, -1000, 1844, - -1000, 137, 136, 254, 128, 128, 253, 956, 199, 1648, - 250, 128, -1000, 261, -1000, 1844, -1000, 37, -1000, -1000, + -1000, -1000, -1000, -1000, 145, 1853, 39, 130, 205, -1000, + -1000, -1000, -1000, 1853, -1000, -1000, -1000, -1000, -1000, -1000, + 779, 779, -1000, -1000, -1000, -1000, 1028, 47, -10, 16, + -1000, -1000, 1853, 1853, 144, 11, -1000, 169, 116, 143, + 65, 60, 56, 257, -1000, 1853, 39, 246, -1000, -1000, + 82, 53, -1000, 168, -1000, 255, -1000, 141, 140, 1853, + 39, 245, -1000, -1000, -1000, 25, -1000, -1000, -1000, -1000, + 713, -1000, 32, -1000, 4, -1000, 15, -1000, -1000, 1853, + -1000, 139, 137, 240, 130, 130, 233, 965, 201, 1657, + 232, 130, -1000, 259, -1000, 1853, -1000, 34, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 21, 83, 128, 77, -1000, 249, 238, -1000, 19, 153, - 1378, 1, -1000, -22, -1000, -1000, -1000, -1000, -1000, 30, - -1000, 4, 232, 221, 21, -1000, -1000, -1000, 0, -1000, - -1000, 73, -1000, -1000, 100, 1648, -1000, -1000, -1000, -1000, - 130, 1264, 1844, 1844, 60, 1844, -1000, -1000, -1000, -1000, + 14, 82, 130, 78, -1000, 221, 219, -1000, 9, 154, + 1387, -1, -1000, 12, -1000, -1000, -1000, -1000, -1000, 41, + -1000, -6, 217, 215, 14, -1000, -1000, -1000, -22, -1000, + -1000, 1273, 17, -1000, 72, -1000, -1000, 98, 1657, -1000, + -1000, -1000, -1000, 132, 1273, 1853, 1853, 75, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 21, -1000, 206, -1000, - 1324, -1000, 128, -1000, -1000, -1000, -1000, 23, 19, -1000, - 129, -1000, 20, 1324, 14, 44, 1844, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14, + -1000, 257, -1000, 1333, -1000, 130, -1000, -1000, -1000, -1000, + 21, 9, -1000, 131, -1000, 25, 1333, 19, 59, 1853, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 835, -1000, -1000, -1000, 22, 21, -1000, 128, - -1000, 1264, 897, 128, -1000, -1000, 72, 135, 134, 1844, - 39, -1000, 128, 32, -1000, 128, 88, -1000, 129, -1000, - 102, 13, -1000, 1844, 39, -1000, 128, 82, -1000, 128, - -1000, -1000, -1000, -1000, 897, 218, 215, -1000, -1000, -1000, - 98, 128, -1000, -1000, 128, -1000, -1000, 97, 128, -1000, - 129, 19, -5, -1000, 96, 95, 216, 128, 94, -1000, - -1000, 129, 128, 66, -1000, 128, 216, -1000, -1000, -1000, - -1000, 128, -1000, 90, 128, -1000, -1000, -1000, -1000, 74, - -1000, + -1000, -1000, -1000, -1000, -1000, 844, -1000, -1000, -1000, 20, + 14, -1000, 130, -1000, -1000, -1000, -1000, 906, 130, -1000, + -1000, 71, 136, 104, 1853, 39, -1000, 130, 31, -1000, + 130, 115, -1000, 131, -1000, 100, 13, -1000, 1853, 39, + -1000, 130, 114, -1000, 130, -1000, -1000, -1000, 906, 213, + 210, -1000, -1000, -1000, 96, 130, -1000, -1000, 130, -1000, + -1000, 95, 130, -1000, 131, 9, 6, -1000, 94, 93, + 214, 130, 92, -1000, -1000, 131, 130, 113, -1000, 130, + 214, -1000, -1000, -1000, -1000, 130, -1000, 88, 130, -1000, + -1000, -1000, -1000, 86, -1000, } var protoPgo = [...]int16{ - 0, 351, 350, 349, 282, 221, 348, 347, 346, 10, - 345, 6, 344, 44, 343, 14, 18, 27, 11, 26, - 8, 12, 340, 339, 9, 338, 337, 20, 24, 336, - 335, 334, 332, 331, 330, 329, 43, 13, 328, 327, - 326, 325, 324, 17, 323, 322, 321, 31, 320, 319, - 318, 317, 38, 23, 316, 315, 313, 312, 311, 310, - 309, 308, 307, 306, 36, 45, 305, 2, 16, 304, - 303, 302, 301, 300, 299, 29, 22, 19, 28, 298, - 297, 33, 30, 296, 295, 290, 32, 42, 289, 288, - 21, 287, 25, 284, 283, 268, 7, 267, 266, 15, - 5, 0, 257, + 0, 354, 353, 352, 282, 221, 351, 350, 349, 348, + 347, 6, 19, 17, 346, 345, 41, 344, 15, 27, + 25, 11, 10, 8, 12, 343, 340, 9, 339, 338, + 20, 24, 337, 336, 335, 334, 332, 331, 330, 43, + 13, 329, 328, 327, 326, 325, 14, 324, 323, 322, + 32, 321, 320, 319, 318, 34, 23, 317, 316, 315, + 313, 312, 311, 310, 309, 308, 307, 36, 46, 306, + 2, 18, 305, 304, 303, 302, 300, 299, 28, 22, + 21, 30, 298, 297, 35, 29, 296, 295, 293, 33, + 38, 290, 289, 31, 288, 26, 287, 284, 283, 7, + 267, 264, 16, 5, 0, 259, } var protoR1 = [...]int8{ 0, 1, 1, 1, 1, 1, 1, 4, 6, 6, - 5, 5, 5, 5, 5, 5, 5, 5, 102, 102, - 101, 101, 100, 100, 2, 3, 7, 7, 7, 8, - 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, - 42, 42, 10, 11, 15, 15, 15, 15, 13, 18, - 18, 19, 19, 19, 22, 22, 22, 22, 22, 22, - 22, 22, 90, 90, 20, 20, 53, 52, 52, 51, - 51, 51, 51, 51, 51, 54, 54, 54, 14, 14, - 14, 14, 17, 17, 17, 26, 26, 21, 21, 21, - 23, 23, 23, 49, 49, 24, 24, 25, 25, 25, - 50, 50, 43, 43, 44, 44, 45, 45, 46, 46, - 47, 47, 48, 48, 36, 36, 36, 16, 16, 12, - 12, 9, 9, 59, 59, 61, 61, 58, 70, 70, - 69, 69, 68, 68, 68, 68, 68, 56, 56, 60, - 60, 62, 62, 63, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 80, 80, 78, 78, - 76, 76, 76, 79, 79, 77, 77, 77, 27, 27, - 73, 73, 74, 74, 75, 75, 71, 71, 72, 72, - 81, 84, 84, 83, 83, 82, 82, 82, 82, 85, - 85, 64, 67, 67, 66, 66, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 55, 55, 55, - 55, 86, 89, 89, 88, 88, 87, 87, 87, 87, - 57, 57, 57, 57, 91, 94, 94, 93, 93, 92, - 92, 92, 95, 95, 99, 99, 98, 98, 97, 97, - 96, 96, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 5, 5, 5, 5, 5, 5, 5, 5, 105, 105, + 104, 104, 103, 103, 2, 3, 7, 7, 7, 8, + 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, + 45, 45, 10, 11, 18, 18, 18, 18, 16, 21, + 21, 22, 22, 22, 25, 25, 25, 25, 25, 25, + 25, 25, 93, 93, 23, 23, 56, 55, 55, 54, + 54, 54, 54, 54, 54, 57, 57, 57, 17, 17, + 17, 17, 20, 20, 20, 29, 29, 24, 24, 24, + 26, 26, 26, 52, 52, 27, 27, 28, 28, 28, + 53, 53, 46, 46, 47, 47, 48, 48, 49, 49, + 50, 50, 51, 51, 39, 39, 39, 19, 19, 14, + 14, 15, 15, 13, 13, 12, 9, 9, 62, 62, + 64, 64, 61, 73, 73, 72, 72, 71, 71, 71, + 71, 71, 59, 59, 63, 63, 65, 65, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, + 32, 83, 83, 81, 81, 79, 79, 79, 82, 82, + 80, 80, 80, 30, 30, 76, 76, 77, 77, 78, + 78, 74, 74, 75, 75, 84, 87, 87, 86, 86, + 85, 85, 85, 85, 88, 88, 67, 70, 70, 69, + 69, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 58, 58, 58, 58, 89, 92, 92, 91, + 91, 90, 90, 90, 90, 60, 60, 60, 60, 94, + 97, 97, 96, 96, 95, 95, 95, 98, 98, 102, + 102, 101, 101, 100, 100, 99, 99, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, } var protoR2 = [...]int8{ @@ -633,18 +641,19 @@ var protoR2 = [...]int8{ 3, 2, 3, 1, 3, 1, 1, 3, 2, 3, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 3, 2, 1, - 3, 3, 1, 8, 9, 9, 10, 6, 0, 1, - 2, 1, 1, 1, 1, 2, 1, 5, 6, 7, - 8, 5, 6, 6, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 4, 1, 3, - 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, - 4, 1, 4, 1, 3, 3, 1, 3, 1, 3, - 6, 1, 2, 2, 1, 1, 1, 1, 1, 4, - 5, 6, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 6, 7, 5, - 6, 6, 0, 1, 2, 1, 1, 1, 2, 1, - 6, 7, 5, 6, 6, 1, 2, 2, 1, 1, - 1, 1, 6, 9, 4, 3, 1, 2, 2, 1, + 2, 1, 2, 1, 1, 2, 3, 1, 8, 9, + 9, 10, 6, 0, 1, 2, 1, 1, 1, 1, + 2, 1, 5, 6, 7, 8, 5, 6, 6, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 1, 3, 1, 3, 3, 1, 3, + 1, 3, 3, 1, 2, 4, 1, 4, 1, 3, + 3, 1, 3, 1, 3, 6, 1, 2, 2, 1, + 1, 1, 1, 1, 4, 5, 6, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 7, 5, 6, 6, 0, 1, 2, + 1, 1, 1, 2, 1, 6, 7, 5, 6, 6, + 1, 2, 2, 1, 1, 1, 1, 6, 9, 4, + 3, 1, 2, 2, 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, @@ -673,82 +682,82 @@ var protoR2 = [...]int8{ 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, + 1, } var protoChk = [...]int16{ - -1000, -1, -2, -3, -4, 8, 9, -101, -102, 53, - -4, -4, 52, 52, -6, -5, -7, -8, -11, -64, - -81, -86, -91, 2, 10, 13, 14, 45, 44, 46, - 47, 53, -90, 4, -90, -5, -90, 11, 12, -37, - -28, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1000, -1, -2, -3, -4, 8, 9, -104, -105, 53, + -4, -4, 52, 52, -6, -5, -7, -8, -11, -67, + -84, -89, -94, 2, 10, 13, 14, 45, 44, 46, + 47, 53, -93, 4, -93, -5, -93, 11, 12, -40, + -31, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, -15, -28, -13, 66, -28, - -28, -43, -37, 60, -28, 53, 4, 53, -101, -90, - -90, -101, 60, 52, 60, -43, 55, 55, 55, -37, - 55, -101, -101, -28, -18, -19, -20, -90, -22, -28, - 55, 6, 65, 64, 5, -28, -13, 67, -67, -101, - -84, -101, -89, -88, -87, -57, -59, 2, -36, -45, - 21, 20, 19, -39, 60, -31, 7, 8, 9, 10, + 46, 47, 48, 49, 50, -18, -31, -16, 66, -31, + -31, -46, -40, 60, -31, 53, 4, 53, -104, -93, + -93, -104, 60, 52, 60, -46, 55, 55, 55, -40, + 55, -104, -104, -31, -21, -22, -23, -93, -25, -31, + 55, 6, 65, 64, 5, -31, -16, 67, -70, -104, + -87, -104, -92, -91, -90, -60, -62, 2, -39, -48, + 21, 20, 19, -42, 60, -34, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, -94, -101, -101, -53, - 56, -52, -51, -54, 2, -14, -28, 68, 6, 17, - 5, 6, 17, 5, 56, -66, -65, -55, -81, -64, - -86, -80, -61, -11, -58, -62, -73, 2, -36, -44, - 40, 38, -63, 43, -75, -38, 60, 39, -30, 7, + 45, 46, 47, 48, 49, 50, -97, -104, -104, -56, + 56, -55, -54, -57, 2, -17, -31, 68, 6, 17, + 5, 6, 17, 5, 56, -69, -68, -58, -84, -67, + -89, -83, -64, -11, -61, -65, -76, 2, -39, -47, + 40, 38, -66, 43, -78, -41, 60, 39, -33, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 47, 48, 49, - 50, 56, -83, -82, -11, -85, -74, 2, -35, 43, - -75, 7, 8, 9, 10, 11, 12, 13, 15, 16, + 50, 56, -86, -85, -11, -88, -77, 2, -38, 43, + -78, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, - 48, 49, 50, 56, -87, 53, 37, -47, -41, 60, - -33, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 48, 49, 50, 56, -90, 53, 37, -50, -44, 60, + -36, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, -28, 60, -37, 56, -93, -92, - -11, -95, 2, 48, 56, -52, 61, 53, 61, 53, - 54, 54, -26, -21, -25, -20, 63, 68, -37, 2, - -101, -65, 37, -47, -28, -78, -76, 5, -28, -28, - -78, -71, -72, -90, -28, 60, -37, 63, -101, -82, - 52, -79, -77, -27, 5, 65, -101, -28, -28, 60, - -37, 52, -28, -101, -92, -28, -17, -19, -21, -23, - 68, -17, -53, 62, -50, 69, 2, -21, 69, 58, - 69, -28, -28, 52, 53, -16, 61, 68, 41, 55, - 52, 53, -101, 61, -101, 61, -28, -29, 24, 25, + 47, 48, 49, 50, -31, 60, -40, 56, -96, -95, + -11, -98, 2, 48, 56, -55, 61, 53, 61, 53, + 54, 54, -29, -24, -28, -23, 63, 68, -40, 2, + -104, -68, 37, -50, -31, -81, -79, 5, -31, -31, + -81, -74, -75, -93, -31, 60, -40, 63, -104, -85, + 52, -82, -80, -30, 5, 65, -104, -31, -31, 60, + -40, 52, -31, -104, -95, -31, -20, -22, -24, -26, + 68, -20, -56, 62, -53, 69, 2, -24, 69, 58, + 69, -31, -31, 52, 53, -19, 61, 68, 41, 55, + 52, 53, -104, 61, -104, 61, -31, -32, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - -27, 61, 53, 41, 5, 52, 52, -28, 5, -99, - 66, -49, 69, 2, -24, -19, -21, 62, 69, 61, - 69, -37, 52, 52, 5, -101, -101, -76, -12, 69, - -9, -15, 5, 42, -70, -69, -68, -10, -56, -60, - 2, 14, -46, 37, -40, 60, -32, 7, 8, 9, - 10, 11, 12, 13, 15, 16, 17, 18, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 5, -101, -90, -28, - 61, -101, -16, -77, -101, -27, 42, 5, 5, -100, - -16, 53, 50, 49, -48, -42, 60, -34, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 50, 69, 61, 69, -21, 69, 5, 5, -101, -16, - 69, 61, 52, 56, -68, 53, -15, -28, -28, 60, - -37, -101, -16, -43, -101, 55, -16, -100, -16, -100, - -99, -43, 67, 60, -37, -24, 55, -16, -101, -16, - -101, -9, -18, -101, 52, 52, 52, -28, -101, 62, - -67, 55, -100, -101, 55, 67, -28, -67, 55, -101, - -18, 5, 5, 56, -67, -98, -101, 56, -67, -100, - -100, -16, 55, -16, 56, 56, -97, -96, -11, 2, - -101, 56, -100, -67, 55, -101, -96, -101, 56, -67, - 56, + -30, 61, 53, 41, 5, 52, 52, -31, 5, -102, + 66, -52, 69, 2, -27, -22, -24, 62, 69, 61, + 69, -40, 52, 52, 5, -104, -104, -79, -14, 69, + -13, -15, -9, -12, -18, 5, 42, -73, -72, -71, + -10, -59, -63, 2, 14, -49, 37, -43, 60, -35, + 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, + 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 5, + -104, -93, -31, 61, -104, -19, -80, -104, -30, 42, + 5, 5, -103, -19, 53, 50, 49, -51, -45, 60, + -37, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 50, 69, 61, 69, -24, 69, 5, + 5, -104, -19, 69, -13, -12, 61, 52, 56, -71, + 53, -18, -31, -31, 60, -40, -104, -19, -46, -104, + 55, -19, -103, -19, -103, -102, -46, 67, 60, -40, + -27, 55, -19, -104, -19, -104, -21, -104, 52, 52, + 52, -31, -104, 62, -70, 55, -103, -104, 55, 67, + -31, -70, 55, -104, -21, 5, 5, 56, -70, -101, + -104, 56, -70, -103, -103, -19, 55, -19, 56, 56, + -100, -99, -11, 2, -104, 56, -103, -70, 55, -104, + -99, -104, 56, -70, 56, } var protoDef = [...]int16{ @@ -756,74 +765,74 @@ var protoDef = [...]int16{ 4, 5, 0, 0, -2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 19, 0, 62, 0, 8, 21, 0, 0, 21, - 30, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 525, 0, 44, 46, 0, 0, + 30, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 0, 44, 46, 0, 0, 0, 0, 102, 0, 0, 24, 63, 25, 26, 21, 21, 29, 0, 0, 0, 0, 21, 21, -2, 103, 21, 27, 28, 31, 21, 49, 50, 51, 52, 53, 0, 54, 0, 0, 59, 45, 47, 48, 0, -2, - 0, -2, 0, -2, 215, 216, 217, 219, 0, 0, - 114, 115, 116, 106, 0, 34, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, -2, 43, 0, + 0, -2, 0, -2, 220, 221, 222, 224, 0, 0, + 114, 115, 116, 106, 0, 34, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 0, -2, 43, 0, 65, 66, -2, 69, 74, 0, 78, 0, 55, 58, - 61, 56, 57, 60, 21, -2, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 0, 0, - 0, 0, 0, 0, 171, 104, 0, 268, 32, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, - 274, 21, -2, 184, 185, 186, 187, 188, 0, 0, - 173, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 21, 214, 218, 0, 0, 110, 0, - 38, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 0, 0, 107, 21, -2, 228, - 229, 230, 231, 0, 64, 68, 70, 71, 72, 73, + 61, 56, 57, 60, 21, -2, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 0, 0, + 0, 0, 0, 0, 176, 104, 0, 273, 32, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, + 279, 21, -2, 189, 190, 191, 192, 193, 0, 0, + 178, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 21, 219, 223, 0, 0, 110, 0, + 38, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 0, 0, 107, 21, -2, 233, + 234, 235, 236, 0, 64, 68, 70, 71, 72, 73, 0, 0, 76, 85, 86, 87, 0, 0, 0, 0, - 191, 194, 0, 0, 0, 0, 158, 160, 0, 0, - 0, 21, 21, 176, 178, 0, 105, 0, 180, 183, - 0, 0, 163, 165, 168, 0, 211, 0, 0, 0, - 111, 0, 35, 224, 227, 0, 77, 82, 83, 84, + 196, 199, 0, 0, 0, 0, 163, 165, 0, 0, + 0, 21, 21, 181, 183, 0, 105, 0, 185, 188, + 0, 0, 168, 170, 173, 0, 216, 0, 0, 0, + 111, 0, 35, 229, 232, 0, 77, 82, 83, 84, 0, 75, 0, 89, 0, 98, 0, 100, 79, 0, 81, 0, 0, 0, 21, 21, 0, 0, 0, -2, - 0, 21, 174, 0, 175, 0, 33, 0, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 21, 0, 21, 0, 169, 0, 0, 39, 23, 0, + 0, 21, 179, 0, 180, 0, 33, 0, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 21, 0, 21, 0, 174, 0, 0, 39, 23, 0, 0, 0, 91, 0, 93, 95, 96, 88, 97, 0, - 99, 0, 0, 0, 21, 156, 157, 159, 0, 118, - 119, 122, 161, 162, 0, -2, 131, 132, 133, 134, - 136, 0, 0, 0, 108, 0, 36, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 21, 170, 177, 179, - 0, 189, 21, 164, 172, 166, 167, 0, 23, 222, - 23, 22, 0, 0, 0, 112, 0, 40, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 90, 0, 92, 101, 80, 0, 21, 209, 21, - 117, 0, 0, 21, 130, 135, 0, 0, 0, 0, - 109, 141, 21, 0, 190, 21, 0, 220, 23, 223, - 21, 0, 235, 0, 113, 94, 21, 0, 207, 21, - 210, 120, 121, 127, 0, 0, 0, 37, 142, 143, - 0, 21, 221, 232, 21, 234, 41, 0, 21, 208, - 23, 23, 0, 123, 0, 0, -2, 21, 0, 42, - 137, 23, 21, 0, 124, 21, -2, 239, 240, 241, - 125, 21, 138, 0, 21, 233, 238, 126, 139, 0, - 140, + 99, 0, 0, 0, 21, 161, 162, 164, 0, 118, + 119, 0, 123, -2, 127, 166, 167, 0, -2, 136, + 137, 138, 139, 141, 0, 0, 0, 108, 0, 36, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 21, + 175, 182, 184, 0, 194, 21, 169, 177, 171, 172, + 0, 23, 227, 23, 22, 0, 0, 0, 112, 0, + 40, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 90, 0, 92, 101, 80, 0, + 21, 214, 21, 117, 120, -2, 125, 0, 21, 135, + 140, 0, 0, 0, 0, 109, 146, 21, 0, 195, + 21, 0, 225, 23, 228, 21, 0, 240, 0, 113, + 94, 21, 0, 212, 21, 215, 126, 132, 0, 0, + 0, 37, 147, 148, 0, 21, 226, 237, 21, 239, + 41, 0, 21, 213, 23, 23, 0, 128, 0, 0, + -2, 21, 0, 42, 142, 23, 21, 0, 129, 21, + -2, 244, 245, 246, 130, 21, 143, 0, 21, 238, + 243, 131, 144, 0, 145, } var protoTok1 = [...]int8{ @@ -1794,59 +1803,87 @@ protodefault: case 119: protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].optRaw}} + protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} } case 120: - protoDollar = protoS[protopt-3 : protopt+1] + protoDollar = protoS[protopt-2 : protopt+1] { - protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[3].optRaw) - protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].b) + protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) + protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) protoVAL.opts = protoDollar[1].opts } case 121: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} + } + case 122: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) + protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) + protoVAL.opts = protoDollar[1].opts + } + case 123: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw) + } + case 124: + protoDollar = protoS[protopt-1 : protopt+1] + { + protolex.(*protoLex).Error("unexpected ','") + protoVAL.opt = protoDollar[1].opt + } + case 125: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw, protoDollar[2].b) + } + case 126: protoDollar = protoS[protopt-3 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protoVAL.optRaw = ast.NewCompactOptionNode(optName, protoDollar[2].b, protoDollar[3].v) } - case 122: + case 127: protoDollar = protoS[protopt-1 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protolex.(*protoLex).Error("compact option must have a value") protoVAL.optRaw = ast.NewCompactOptionNode(optName, nil, nil) } - case 123: + case 128: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 124: + case 129: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b) } - case 125: + case 130: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b), protoDollar[9].bs...) } - case 126: + case 131: protoDollar = protoS[protopt-10 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b), protoDollar[10].bs...) } - case 127: + case 132: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.oo = newNodeWithRunes(ast.NewOneofNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].ooElements, protoDollar[5].b), protoDollar[6].bs...) } - case 128: + case 133: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.ooElements = nil } - case 130: + case 135: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].ooElement != nil { @@ -1855,7 +1892,7 @@ protodefault: protoVAL.ooElements = protoDollar[1].ooElements } } - case 131: + case 136: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].ooElement != nil { @@ -1864,367 +1901,367 @@ protodefault: protoVAL.ooElements = nil } } - case 132: + case 137: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].optRaw } - case 133: + case 138: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].fld } - case 134: + case 139: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].grp } - case 135: + case 140: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.ooElement = nil } - case 136: + case 141: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = nil } - case 137: + case 142: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 138: + case 143: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 139: + case 144: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b, protoDollar[6].msgElements, protoDollar[7].b) } - case 140: + case 145: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 141: + case 146: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semi), extra...) } - case 142: + case 147: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semi), extra...) } - case 143: + case 148: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.mapType = ast.NewMapTypeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, protoDollar[3].id, protoDollar[4].b, protoDollar[5].tid, protoDollar[6].b) } - case 156: + case 161: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `extensions 1 to 10` and `extensions 1` followed by `to = 10`. protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, nil, protoDollar[3].b), protoDollar[4].bs...) } - case 157: + case 162: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].cmpctOpts, semi), extra...) } - case 158: + case 163: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 159: + case 164: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 160: + case 165: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, nil, nil, nil) } - case 161: + case 166: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), protoDollar[3].i, nil) } - case 162: + case 167: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 163: + case 168: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 164: + case 169: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 165: + case 170: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, nil, nil, nil) } - case 166: + case 171: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), protoDollar[3].il, nil) } - case 167: + case 172: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 168: + case 173: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.il = protoDollar[1].i } - case 169: + case 174: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.il = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 170: + case 175: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 172: + case 177: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 174: + case 179: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.names, protoDollar[2].names.commas, semi), extra...) } - case 175: + case 180: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedIdentifiersNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.idents, protoDollar[2].names.commas, semi), extra...) } - case 176: + case 181: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{names: []ast.StringValueNode{toStringValueNode(protoDollar[1].str)}} } - case 177: + case 182: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.names = append(protoDollar[1].names.names, toStringValueNode(protoDollar[3].str)) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 178: + case 183: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 179: + case 184: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.idents = append(protoDollar[1].names.idents, protoDollar[3].id) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 180: + case 185: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.en = newNodeWithRunes(ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enElements, protoDollar[5].b), protoDollar[6].bs...) } - case 181: + case 186: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, nil) } - case 182: + case 187: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, protoDollar[2].enElements) } - case 183: + case 188: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = append(protoDollar[1].enElements, protoDollar[2].enElements...) } - case 184: + case 189: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = protoDollar[1].enElements } - case 185: + case 190: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 186: + case 191: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].env.Node, protoDollar[1].env.Runes) } - case 187: + case 192: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 188: + case 193: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = nil } - case 189: + case 194: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, nil, semi), extra...) } - case 190: + case 195: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, protoDollar[4].cmpctOpts, semi), extra...) } - case 191: + case 196: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.msg = newNodeWithRunes(ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgElements, protoDollar[5].b), protoDollar[6].bs...) } - case 192: + case 197: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, nil) } - case 193: + case 198: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, protoDollar[2].msgElements) } - case 194: + case 199: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = append(protoDollar[1].msgElements, protoDollar[2].msgElements...) } - case 195: + case 200: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = protoDollar[1].msgElements } - case 196: + case 201: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgFld.Node, protoDollar[1].msgFld.Runes) } - case 197: + case 202: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].en.Node, protoDollar[1].en.Runes) } - case 198: + case 203: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msg.Node, protoDollar[1].msg.Runes) } - case 199: + case 204: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].extend.Node, protoDollar[1].extend.Runes) } - case 200: + case 205: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].ext.Node, protoDollar[1].ext.Runes) } - case 201: + case 206: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgGrp.Node, protoDollar[1].msgGrp.Runes) } - case 202: + case 207: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 203: + case 208: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].oo.Node, protoDollar[1].oo.Runes) } - case 204: + case 209: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].mapFld.Node, protoDollar[1].mapFld.Runes) } - case 205: + case 210: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 206: + case 211: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = nil } - case 207: + case 212: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, semis), extra...) } - case 208: + case 213: protoDollar = protoS[protopt-7 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[7].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, semis), extra...) } - case 209: + case 214: protoDollar = protoS[protopt-5 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semis), extra...) } - case 210: + case 215: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semis), extra...) } - case 211: + case 216: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.extend = newNodeWithRunes(ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extElements, protoDollar[5].b), protoDollar[6].bs...) } - case 212: + case 217: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.extElements = nil } - case 214: + case 219: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].extElement != nil { @@ -2233,7 +2270,7 @@ protodefault: protoVAL.extElements = protoDollar[1].extElements } } - case 215: + case 220: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].extElement != nil { @@ -2242,133 +2279,133 @@ protodefault: protoVAL.extElements = nil } } - case 216: + case 221: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].fld } - case 217: + case 222: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].grp } - case 218: + case 223: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.extElement = nil } - case 219: + case 224: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = nil } - case 220: + case 225: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b) } - case 221: + case 226: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b) } - case 222: + case 227: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 223: + case 228: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 224: + case 229: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.svc = newNodeWithRunes(ast.NewServiceNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].svcElements, protoDollar[5].b), protoDollar[6].bs...) } - case 225: + case 230: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, nil) } - case 226: + case 231: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, protoDollar[2].svcElements) } - case 227: + case 232: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = append(protoDollar[1].svcElements, protoDollar[2].svcElements...) } - case 228: + case 233: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = protoDollar[1].svcElements } - case 229: + case 234: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 230: + case 235: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].mtd.Node, protoDollar[1].mtd.Runes) } - case 231: + case 236: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = nil } - case 232: + case 237: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mtd = newNodeWithRunes(ast.NewRPCNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, semi), extra...) } - case 233: + case 238: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.mtd = newNodeWithRunes(ast.NewRPCNodeWithBody(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, protoDollar[6].b, protoDollar[7].mtdElements, protoDollar[8].b), protoDollar[9].bs...) } - case 234: + case 239: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, protoDollar[2].id.ToKeyword(), protoDollar[3].tid, protoDollar[4].b) } - case 235: + case 240: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, nil, protoDollar[2].tid, protoDollar[3].b) } - case 236: + case 241: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, nil) } - case 237: + case 242: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, protoDollar[2].mtdElements) } - case 238: + case 243: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = append(protoDollar[1].mtdElements, protoDollar[2].mtdElements...) } - case 239: + case 244: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = protoDollar[1].mtdElements } - case 240: + case 245: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = toElements[ast.RPCElement](toMethodElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 241: + case 246: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = nil