From f58f5df622df967d0abc5be9dad8c02fcaf0fb8a Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Mon, 9 Jan 2023 18:06:50 -0800 Subject: [PATCH] Add support for mapping leaf-lists to paths. (#756) * Add annotations to protobuf oneof fields. * (M) protogen/* - Annotate a field within a oneof with the schema paths. * Add support for mapping `oneof` fields to paths. * (M) protogen.* - Add annotations for a field to every subfield of a oneof such that handling these fields is as per any other message field. * (M) protomap/integration_tests/* - Validate against generated gRIBI messages. * (M) protomap/* - Add support for mapping oneof fields and test coverage. * Ensure that path annotations are created for leaf-list of unions. * (M) protogen/protogen(_test)?.go - Add support for adding schema path annotations for unions that are within leaf-lists. This is represented as a repeated message rather than a single oneof. * (M) protogen/testdata/* - Update testing data. * Working commit. * Add generated protobuf examples. * Note that panic should be avoided. * Add support for mapping leaf-list and unions to paths. * Fix integration test. * Fix defect with multiple leaf-list of union. * Address review comments. * Push file with error strings corrected. --- proto/yext/yext.pb.go | 70 +- proto/yext/yext.proto | 8 + protogen/protogen.go | 19 + protogen/protogen_test.go | 20 +- ...s.compressed.nested_messages.formatted-txt | 2 +- ...ted-messages.nested_messages.formatted-txt | 4 +- ...test-a.compress.parent.child.formatted-txt | 2 +- ...st-a.nocompress.parent.child.formatted-txt | 4 +- ...o-test-c.proto-test-c.entity.formatted-txt | 12 +- ...compressed.proto-test-d.test.formatted-txt | 4 +- ...compressed.proto-test-e.bars.formatted-txt | 2 +- .../integration_tests/integration_test.go | 21 +- .../testdata/gribi_aft/enums/enums.pb.go | 398 +++ .../testdata/gribi_aft/enums/enums.proto | 51 + .../testdata/gribi_aft/gribi_aft.pb.go | 2636 +++++++++++++++++ .../testdata/gribi_aft/gribi_aft.proto | 145 + protomap/proto.go | 209 +- protomap/proto_test.go | 107 + .../testdata/exschemapath/exschemapath.pb.go | 706 +++-- .../testdata/exschemapath/exschemapath.proto | 13 + 20 files changed, 4088 insertions(+), 345 deletions(-) create mode 100644 protomap/integration_tests/testdata/gribi_aft/enums/enums.pb.go create mode 100644 protomap/integration_tests/testdata/gribi_aft/enums/enums.proto create mode 100644 protomap/integration_tests/testdata/gribi_aft/gribi_aft.pb.go create mode 100644 protomap/integration_tests/testdata/gribi_aft/gribi_aft.proto diff --git a/proto/yext/yext.pb.go b/proto/yext/yext.pb.go index 344f8d510..13495c0cf 100644 --- a/proto/yext/yext.pb.go +++ b/proto/yext/yext.pb.go @@ -19,7 +19,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.1 -// protoc v3.19.2 +// protoc v3.21.9 // source: yext.proto package yext @@ -47,6 +47,22 @@ var file_yext_proto_extTypes = []protoimpl.ExtensionInfo{ Tag: "bytes,1040,opt,name=schemapath", Filename: "yext.proto", }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1041, + Name: "yext.leaflist", + Tag: "varint,1041,opt,name=leaflist", + Filename: "yext.proto", + }, + { + ExtendedType: (*descriptorpb.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 1042, + Name: "yext.leaflistunion", + Tag: "varint,1042,opt,name=leaflistunion", + Filename: "yext.proto", + }, { ExtendedType: (*descriptorpb.EnumValueOptions)(nil), ExtensionType: (*string)(nil), @@ -68,6 +84,18 @@ var ( // // optional string schemapath = 1040; E_Schemapath = &file_yext_proto_extTypes[0] + // leaflist indicates that the field represents a YANG leaf-list. It is + // valid only for repeated fields, and can be used to determine that the + // generated field is a list of scalar values by any parsing code. + // + // optional bool leaflist = 1041; + E_Leaflist = &file_yext_proto_extTypes[1] + // leaflistunion indicates that hte field represents a YANG leaf-list + // of union types. It is valid only for repeated message fields and can be + // used to determine that specific leaf-list union handling is required. + // + // optional bool leaflistunion = 1042; + E_Leaflistunion = &file_yext_proto_extTypes[2] ) // Extension fields to descriptorpb.EnumValueOptions. @@ -77,7 +105,7 @@ var ( // reserved in the global protobuf registry. // // optional string yang_name = 1040; - E_YangName = &file_yext_proto_extTypes[1] + E_YangName = &file_yext_proto_extTypes[3] ) var File_yext_proto protoreflect.FileDescriptor @@ -90,14 +118,22 @@ var file_yext_proto_rawDesc = []byte{ 0x74, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x90, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x70, 0x61, 0x74, 0x68, 0x3a, 0x3f, 0x0a, 0x09, 0x79, 0x61, 0x6e, 0x67, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x90, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x79, 0x61, 0x6e, - 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, - 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x61, 0x74, 0x68, 0x3a, 0x3a, 0x0a, 0x08, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, + 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x91, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, + 0x3a, 0x44, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x75, 0x6e, 0x69, 0x6f, + 0x6e, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x92, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, + 0x74, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x3a, 0x3f, 0x0a, 0x09, 0x79, 0x61, 0x6e, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x90, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x79, + 0x61, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x27, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_yext_proto_goTypes = []interface{}{ @@ -106,11 +142,13 @@ var file_yext_proto_goTypes = []interface{}{ } var file_yext_proto_depIdxs = []int32{ 0, // 0: yext.schemapath:extendee -> google.protobuf.FieldOptions - 1, // 1: yext.yang_name:extendee -> google.protobuf.EnumValueOptions - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 0, // [0:2] is the sub-list for extension extendee + 0, // 1: yext.leaflist:extendee -> google.protobuf.FieldOptions + 0, // 2: yext.leaflistunion:extendee -> google.protobuf.FieldOptions + 1, // 3: yext.yang_name:extendee -> google.protobuf.EnumValueOptions + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 0, // [0:4] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name } @@ -126,7 +164,7 @@ func file_yext_proto_init() { RawDescriptor: file_yext_proto_rawDesc, NumEnums: 0, NumMessages: 0, - NumExtensions: 2, + NumExtensions: 4, NumServices: 0, }, GoTypes: file_yext_proto_goTypes, diff --git a/proto/yext/yext.proto b/proto/yext/yext.proto index c1ae222ca..67021a4dd 100644 --- a/proto/yext/yext.proto +++ b/proto/yext/yext.proto @@ -31,6 +31,14 @@ extend google.protobuf.FieldOptions { // parent of the entity). The field number for this extension is reserved // in the global protobuf registry. string schemapath = 1040; + // leaflist indicates that the field represents a YANG leaf-list. It is + // valid only for repeated fields, and can be used to determine that the + // generated field is a list of scalar values by any parsing code. + bool leaflist = 1041; + // leaflistunion indicates that hte field represents a YANG leaf-list + // of union types. It is valid only for repeated message fields and can be + // used to determine that specific leaf-list union handling is required. + bool leaflistunion = 1042; } extend google.protobuf.EnumValueOptions { diff --git a/protogen/protogen.go b/protogen/protogen.go index f45079c96..8a7fbc96a 100644 --- a/protogen/protogen.go +++ b/protogen/protogen.go @@ -97,6 +97,12 @@ const ( // genutil.MakeNameUnique which would append "_" to the name of the key we explicitly // append _ plus the string defined in protoMatchingListNameKeySuffix to the list name. protoMatchingListNameKeySuffix = "key" + // protoLeafListAnnotationOption specifies the name of the FieldOption used to annotate + // whether repeated fields are leaf-lists. + protoLeafListAnnotationOption = "(yext.leaflist)" + // protoLeafListUnionAnnotationOption specifies the name of the FieldOption used to annotate + // whether repeated fields are leaf-lists of unions. + protoLeafListUnionAnnotationOption = "(yext.leaflistunion)" ) // protoMsgField describes a field of a protobuf message. @@ -785,6 +791,19 @@ func addProtoLeafOrLeafListField(fieldDef *protoMsgField, msgDef *protoMsg, args if args.field.Type == ygen.LeafListNode { fieldDef.IsRepeated = true + switch d.repeatedMsg { + case nil: + fieldDef.Options = append(fieldDef.Options, &protoOption{ + Name: protoLeafListAnnotationOption, + Value: "true", + }) + default: + fieldDef.Options = append(fieldDef.Options, &protoOption{ + Name: protoLeafListUnionAnnotationOption, + Value: "true", + }) + } + } return repeatedMsg, imports, nil } diff --git a/protogen/protogen_test.go b/protogen/protogen_test.go index d90f9a47a..bac369e58 100644 --- a/protogen/protogen_test.go +++ b/protogen/protogen_test.go @@ -248,6 +248,10 @@ func TestGenProto3Msg(t *testing.T) { Name: "field_two", Type: "FieldTwoUnion", IsRepeated: true, + Options: []*protoOption{{ + Name: "(yext.leaflistunion)", + Value: "true", + }}, }}, }, "FieldTwoUnion": { @@ -381,6 +385,10 @@ func TestGenProto3Msg(t *testing.T) { Name: "leaf_list", Type: "ywrapper.StringValue", IsRepeated: true, + Options: []*protoOption{{ + Name: "(yext.leaflist)", + Value: "true", + }}, }, { Tag: 17594927, Name: "container_child", @@ -434,14 +442,18 @@ func TestGenProto3Msg(t *testing.T) { Name: "AMessage", YANGPath: "/root/a-message", Fields: []*protoMsgField{{ + Tag: 17594927, + Name: "container_child", + Type: "root.a_message.ContainerChild", + }, { Tag: 299656613, Name: "leaf_list", Type: "ywrapper.StringValue", IsRepeated: true, - }, { - Tag: 17594927, - Name: "container_child", - Type: "root.a_message.ContainerChild", + Options: []*protoOption{{ + Name: "(yext.leaflist)", + Value: "true", + }}, }}, Imports: []string{"base/root/a_message/a_message.proto"}, }, diff --git a/protogen/testdata/proto/nested-messages.compressed.nested_messages.formatted-txt b/protogen/testdata/proto/nested-messages.compressed.nested_messages.formatted-txt index 0ba4a9d04..39de8da89 100644 --- a/protogen/testdata/proto/nested-messages.compressed.nested_messages.formatted-txt +++ b/protogen/testdata/proto/nested-messages.compressed.nested_messages.formatted-txt @@ -46,7 +46,7 @@ message TopLevel { uint64 u_uint64 = 423874955 [(yext.schemapath) = "/top-level/idrefsc/idref/config/u"]; } ywrapper.StringValue l = 372609659 [(yext.schemapath) = "/top-level/idrefsc/idref/config/l"]; - repeated UUnion u = 372609634 [(yext.schemapath) = "/top-level/idrefsc/idref/config/u"]; + repeated UUnion u = 372609634 [(yext.leaflistunion) = true,(yext.schemapath) = "/top-level/idrefsc/idref/config/u"]; } message IdrefKey { openconfig.enums.NestedMessagesKEY i = 1 [(yext.schemapath) = "/top-level/idrefsc/idref/config/i|/top-level/idrefsc/idref/i"]; diff --git a/protogen/testdata/proto/nested-messages.nested_messages.formatted-txt b/protogen/testdata/proto/nested-messages.nested_messages.formatted-txt index 65eb6f28a..57c2ac996 100644 --- a/protogen/testdata/proto/nested-messages.nested_messages.formatted-txt +++ b/protogen/testdata/proto/nested-messages.nested_messages.formatted-txt @@ -79,7 +79,7 @@ message TopLevel { } openconfig.enums.NestedMessagesKEY i = 372609662 [(yext.schemapath) = "/top-level/idrefsc/idref/config/i"]; ywrapper.StringValue l = 372609659 [(yext.schemapath) = "/top-level/idrefsc/idref/config/l"]; - repeated UUnion u = 372609634 [(yext.schemapath) = "/top-level/idrefsc/idref/config/u"]; + repeated UUnion u = 372609634 [(yext.leaflistunion) = true,(yext.schemapath) = "/top-level/idrefsc/idref/config/u"]; } message State { message UUnion { @@ -88,7 +88,7 @@ message TopLevel { } openconfig.enums.NestedMessagesKEY i = 500927979 [(yext.schemapath) = "/top-level/idrefsc/idref/state/i"]; ywrapper.StringValue l = 500927982 [(yext.schemapath) = "/top-level/idrefsc/idref/state/l"]; - repeated UUnion u = 500927991 [(yext.schemapath) = "/top-level/idrefsc/idref/state/u"]; + repeated UUnion u = 500927991 [(yext.leaflistunion) = true,(yext.schemapath) = "/top-level/idrefsc/idref/state/u"]; } Config config = 135893622 [(yext.schemapath) = "/top-level/idrefsc/idref/config"]; State state = 419960739 [(yext.schemapath) = "/top-level/idrefsc/idref/state"]; diff --git a/protogen/testdata/proto/proto-test-a.compress.parent.child.formatted-txt b/protogen/testdata/proto/proto-test-a.compress.parent.child.formatted-txt index c6cfcce36..39870dae8 100644 --- a/protogen/testdata/proto/proto-test-a.compress.parent.child.formatted-txt +++ b/protogen/testdata/proto/proto-test-a.compress.parent.child.formatted-txt @@ -13,7 +13,7 @@ import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; message Child { ywrapper.BoolValue boolean = 135159880; ywrapper.IntValue integer = 367917455; - repeated ywrapper.StringValue leaf_list = 370551192; + repeated ywrapper.StringValue leaf_list = 370551192 [(yext.leaflist) = true]; ywrapper.StringValue leaf_with_dashes = 503746721; ywrapper.StringValue string = 486500768; ywrapper.UintValue uinteger = 343208358; diff --git a/protogen/testdata/proto/proto-test-a.nocompress.parent.child.formatted-txt b/protogen/testdata/proto/proto-test-a.nocompress.parent.child.formatted-txt index eb27a2a05..2a7d36d85 100644 --- a/protogen/testdata/proto/proto-test-a.nocompress.parent.child.formatted-txt +++ b/protogen/testdata/proto/proto-test-a.nocompress.parent.child.formatted-txt @@ -12,7 +12,7 @@ import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; // Config represents the /proto-test-a/parent/child/config YANG schema element. message Config { ywrapper.IntValue integer = 367917455; - repeated ywrapper.StringValue leaf_list = 370551192; + repeated ywrapper.StringValue leaf_list = 370551192 [(yext.leaflist) = true]; ywrapper.StringValue leaf_with_dashes = 503746721; ywrapper.StringValue string = 486500768; ywrapper.UintValue uinteger = 343208358; @@ -26,7 +26,7 @@ message Config { message State { ywrapper.BoolValue boolean = 135159880; ywrapper.IntValue integer = 486380674; - repeated ywrapper.StringValue leaf_list = 256667601; + repeated ywrapper.StringValue leaf_list = 256667601 [(yext.leaflist) = true]; ywrapper.StringValue leaf_with_dashes = 475722830; ywrapper.StringValue string = 428609663; ywrapper.UintValue uinteger = 343366297; diff --git a/protogen/testdata/proto/proto-test-c.proto-test-c.entity.formatted-txt b/protogen/testdata/proto/proto-test-c.proto-test-c.entity.formatted-txt index 62f9f4e4d..b7b149c97 100644 --- a/protogen/testdata/proto/proto-test-c.proto-test-c.entity.formatted-txt +++ b/protogen/testdata/proto/proto-test-c.proto-test-c.entity.formatted-txt @@ -34,9 +34,9 @@ message Config { } EnumeratedLeaf enumerated_leaf = 10800442; EnumeratedWithDefault enumerated_with_default = 83098118; - repeated EnumeratedWithDefaultListMultipleDefault enumerated_with_default_list_multiple_default = 63055264; - repeated EnumeratedWithDefaultListSingleDefault enumerated_with_default_list_single_default = 465479240; - repeated openconfig.enums.ProtoTestCEnumWithDefault enumerated_with_default_list_single_default_at_type = 75892847; + repeated EnumeratedWithDefaultListMultipleDefault enumerated_with_default_list_multiple_default = 63055264 [(yext.leaflist) = true]; + repeated EnumeratedWithDefaultListSingleDefault enumerated_with_default_list_single_default = 465479240 [(yext.leaflist) = true]; + repeated openconfig.enums.ProtoTestCEnumWithDefault enumerated_with_default_list_single_default_at_type = 75892847 [(yext.leaflist) = true]; } // State represents the /proto-test-c/entity/state YANG schema element. @@ -62,7 +62,7 @@ message State { } EnumeratedLeaf enumerated_leaf = 247899547; EnumeratedWithDefault enumerated_with_default = 82519423; - repeated EnumeratedWithDefaultListMultipleDefault enumerated_with_default_list_multiple_default = 195710037; - repeated EnumeratedWithDefaultListSingleDefault enumerated_with_default_list_single_default = 336052385; - repeated openconfig.enums.ProtoTestCEnumWithDefault enumerated_with_default_list_single_default_at_type = 52286674; + repeated EnumeratedWithDefaultListMultipleDefault enumerated_with_default_list_multiple_default = 195710037 [(yext.leaflist) = true]; + repeated EnumeratedWithDefaultListSingleDefault enumerated_with_default_list_single_default = 336052385 [(yext.leaflist) = true]; + repeated openconfig.enums.ProtoTestCEnumWithDefault enumerated_with_default_list_single_default_at_type = 52286674 [(yext.leaflist) = true]; } diff --git a/protogen/testdata/proto/proto-test-d.uncompressed.proto-test-d.test.formatted-txt b/protogen/testdata/proto/proto-test-d.uncompressed.proto-test-d.test.formatted-txt index 4182201d2..2402858f4 100644 --- a/protogen/testdata/proto/proto-test-d.uncompressed.proto-test-d.test.formatted-txt +++ b/protogen/testdata/proto/proto-test-d.uncompressed.proto-test-d.test.formatted-txt @@ -13,7 +13,7 @@ import "openconfig/enums/enums.proto"; // Config represents the /proto-test-d/test/config YANG schema element. message Config { ywrapper.StringValue bar = 88698462; - repeated ywrapper.StringValue foo = 188685517; + repeated ywrapper.StringValue foo = 188685517 [(yext.leaflist) = true]; openconfig.enums.ProtoTestDFOO id = 411659456; openconfig.enums.ProtoTestDATypedef ty = 495547642; } @@ -21,7 +21,7 @@ message Config { // State represents the /proto-test-d/test/state YANG schema element. message State { ywrapper.StringValue bar = 153828379; - repeated ywrapper.StringValue foo = 321003268; + repeated ywrapper.StringValue foo = 321003268 [(yext.leaflist) = true]; openconfig.enums.ProtoTestDFOO id = 490046099; openconfig.enums.ProtoTestDATypedef ty = 3508169; } diff --git a/protogen/testdata/proto/proto-test-e.uncompressed.proto-test-e.bars.formatted-txt b/protogen/testdata/proto/proto-test-e.uncompressed.proto-test-e.bars.formatted-txt index 3742d359e..10a766068 100644 --- a/protogen/testdata/proto/proto-test-e.uncompressed.proto-test-e.bars.formatted-txt +++ b/protogen/testdata/proto/proto-test-e.uncompressed.proto-test-e.bars.formatted-txt @@ -18,6 +18,6 @@ message LluUnion { // Bar represents the /proto-test-e/bars/bar YANG schema element. message Bar { ywrapper.StringValue foo = 91327513; - repeated LluUnion llu = 139983164; + repeated LluUnion llu = 139983164 [(yext.leaflistunion) = true]; ywrapper.StringValue single_type_union = 186685410; } diff --git a/protomap/integration_tests/integration_test.go b/protomap/integration_tests/integration_test.go index f859d86d2..38d66028e 100644 --- a/protomap/integration_tests/integration_test.go +++ b/protomap/integration_tests/integration_test.go @@ -6,8 +6,8 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/openconfig/gribi/v1/proto/gribi_aft" "github.com/openconfig/ygot/protomap" + "github.com/openconfig/ygot/protomap/integration_tests/testdata/gribi_aft" "github.com/openconfig/ygot/testutil" "github.com/openconfig/ygot/ygot" "google.golang.org/protobuf/proto" @@ -70,6 +70,25 @@ func TestGRIBIAFT(t *testing.T) { mustPath("afts/mpls/label-entry[label=32]/state/label"): uint64(32), mustPath("afts/mpls/label-entry[label=32]/label"): uint64(32), }, + }, { + desc: "NH entry with label stack", + inProto: &gribi_aft.Afts{ + NextHop: []*gribi_aft.Afts_NextHopKey{{ + Index: 1, + NextHop: &gribi_aft.Afts_NextHop{ + PushedMplsLabelStack: []*gribi_aft.Afts_NextHop_PushedMplsLabelStackUnion{{ + PushedMplsLabelStackUint64: 42, + }, { + PushedMplsLabelStackUint64: 84, + }}, + }, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("afts/next-hops/next-hop[index=1]/state/pushed-mpls-label-stack"): []interface{}{uint64(42), uint64(84)}, + mustPath("afts/next-hops/next-hop[index=1]/index"): uint64(1), + mustPath("afts/next-hops/next-hop[index=1]/state/index"): uint64(1), + }, }} for _, tt := range tests { diff --git a/protomap/integration_tests/testdata/gribi_aft/enums/enums.pb.go b/protomap/integration_tests/testdata/gribi_aft/enums/enums.pb.go new file mode 100644 index 000000000..f4b92bb88 --- /dev/null +++ b/protomap/integration_tests/testdata/gribi_aft/enums/enums.pb.go @@ -0,0 +1,398 @@ +// gribi_aft.enums is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - github.com/openconfig/gribi/v1/yang/gribi-aft.yang +// Include paths: +// - github.com/openconfig/gribi/v1/yang/... +// - github.com/openconfig/gribi/v1/yang/deps/... + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.21.0--rc1 +// source: v1/proto/gribi_aft/enums/enums.proto + +package enums + +import ( + _ "github.com/openconfig/ygot/proto/yext" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// OpenconfigAftTypesEncapsulationHeaderType represents an enumerated type generated for the YANG enumerated type encapsulation-header-type. +type OpenconfigAftTypesEncapsulationHeaderType int32 + +const ( + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UNSET OpenconfigAftTypesEncapsulationHeaderType = 0 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_GRE OpenconfigAftTypesEncapsulationHeaderType = 1 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4 OpenconfigAftTypesEncapsulationHeaderType = 2 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6 OpenconfigAftTypesEncapsulationHeaderType = 3 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS OpenconfigAftTypesEncapsulationHeaderType = 4 + OpenconfigAftTypesEncapsulationHeaderType_OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN OpenconfigAftTypesEncapsulationHeaderType = 5 +) + +// Enum value maps for OpenconfigAftTypesEncapsulationHeaderType. +var ( + OpenconfigAftTypesEncapsulationHeaderType_name = map[int32]string{ + 0: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UNSET", + 1: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_GRE", + 2: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4", + 3: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6", + 4: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS", + 5: "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN", + } + OpenconfigAftTypesEncapsulationHeaderType_value = map[string]int32{ + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UNSET": 0, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_GRE": 1, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4": 2, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6": 3, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS": 4, + "OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN": 5, + } +) + +func (x OpenconfigAftTypesEncapsulationHeaderType) Enum() *OpenconfigAftTypesEncapsulationHeaderType { + p := new(OpenconfigAftTypesEncapsulationHeaderType) + *p = x + return p +} + +func (x OpenconfigAftTypesEncapsulationHeaderType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpenconfigAftTypesEncapsulationHeaderType) Descriptor() protoreflect.EnumDescriptor { + return file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[0].Descriptor() +} + +func (OpenconfigAftTypesEncapsulationHeaderType) Type() protoreflect.EnumType { + return &file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[0] +} + +func (x OpenconfigAftTypesEncapsulationHeaderType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpenconfigAftTypesEncapsulationHeaderType.Descriptor instead. +func (OpenconfigAftTypesEncapsulationHeaderType) EnumDescriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_enums_enums_proto_rawDescGZIP(), []int{0} +} + +// OpenconfigMplsTypesMplsLabelEnum represents an enumerated type generated for the YANG enumerated type mpls-label. +type OpenconfigMplsTypesMplsLabelEnum int32 + +const ( + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_UNSET OpenconfigMplsTypesMplsLabelEnum = 0 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV4_EXPLICIT_NULL OpenconfigMplsTypesMplsLabelEnum = 1 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_ROUTER_ALERT OpenconfigMplsTypesMplsLabelEnum = 2 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV6_EXPLICIT_NULL OpenconfigMplsTypesMplsLabelEnum = 3 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_IMPLICIT_NULL OpenconfigMplsTypesMplsLabelEnum = 4 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_ENTROPY_LABEL_INDICATOR OpenconfigMplsTypesMplsLabelEnum = 8 + OpenconfigMplsTypesMplsLabelEnum_OPENCONFIGMPLSTYPESMPLSLABELENUM_NO_LABEL OpenconfigMplsTypesMplsLabelEnum = 9 +) + +// Enum value maps for OpenconfigMplsTypesMplsLabelEnum. +var ( + OpenconfigMplsTypesMplsLabelEnum_name = map[int32]string{ + 0: "OPENCONFIGMPLSTYPESMPLSLABELENUM_UNSET", + 1: "OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV4_EXPLICIT_NULL", + 2: "OPENCONFIGMPLSTYPESMPLSLABELENUM_ROUTER_ALERT", + 3: "OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV6_EXPLICIT_NULL", + 4: "OPENCONFIGMPLSTYPESMPLSLABELENUM_IMPLICIT_NULL", + 8: "OPENCONFIGMPLSTYPESMPLSLABELENUM_ENTROPY_LABEL_INDICATOR", + 9: "OPENCONFIGMPLSTYPESMPLSLABELENUM_NO_LABEL", + } + OpenconfigMplsTypesMplsLabelEnum_value = map[string]int32{ + "OPENCONFIGMPLSTYPESMPLSLABELENUM_UNSET": 0, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV4_EXPLICIT_NULL": 1, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_ROUTER_ALERT": 2, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV6_EXPLICIT_NULL": 3, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_IMPLICIT_NULL": 4, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_ENTROPY_LABEL_INDICATOR": 8, + "OPENCONFIGMPLSTYPESMPLSLABELENUM_NO_LABEL": 9, + } +) + +func (x OpenconfigMplsTypesMplsLabelEnum) Enum() *OpenconfigMplsTypesMplsLabelEnum { + p := new(OpenconfigMplsTypesMplsLabelEnum) + *p = x + return p +} + +func (x OpenconfigMplsTypesMplsLabelEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpenconfigMplsTypesMplsLabelEnum) Descriptor() protoreflect.EnumDescriptor { + return file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[1].Descriptor() +} + +func (OpenconfigMplsTypesMplsLabelEnum) Type() protoreflect.EnumType { + return &file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[1] +} + +func (x OpenconfigMplsTypesMplsLabelEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpenconfigMplsTypesMplsLabelEnum.Descriptor instead. +func (OpenconfigMplsTypesMplsLabelEnum) EnumDescriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_enums_enums_proto_rawDescGZIP(), []int{1} +} + +// OpenconfigPacketMatchTypesIPPROTOCOL represents an enumerated type generated for the YANG identity IP_PROTOCOL. +type OpenconfigPacketMatchTypesIPPROTOCOL int32 + +const ( + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_UNSET OpenconfigPacketMatchTypesIPPROTOCOL = 0 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_GRE OpenconfigPacketMatchTypesIPPROTOCOL = 24050007 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_TCP OpenconfigPacketMatchTypesIPPROTOCOL = 38721802 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_L2TP OpenconfigPacketMatchTypesIPPROTOCOL = 81903923 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_AUTH OpenconfigPacketMatchTypesIPPROTOCOL = 203904199 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_PIM OpenconfigPacketMatchTypesIPPROTOCOL = 272904165 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IN_IP OpenconfigPacketMatchTypesIPPROTOCOL = 309674436 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IGMP OpenconfigPacketMatchTypesIPPROTOCOL = 512271866 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_ICMP OpenconfigPacketMatchTypesIPPROTOCOL = 512860246 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_UDP OpenconfigPacketMatchTypesIPPROTOCOL = 525100026 + OpenconfigPacketMatchTypesIPPROTOCOL_OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_RSVP OpenconfigPacketMatchTypesIPPROTOCOL = 530070378 +) + +// Enum value maps for OpenconfigPacketMatchTypesIPPROTOCOL. +var ( + OpenconfigPacketMatchTypesIPPROTOCOL_name = map[int32]string{ + 0: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_UNSET", + 24050007: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_GRE", + 38721802: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_TCP", + 81903923: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_L2TP", + 203904199: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_AUTH", + 272904165: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_PIM", + 309674436: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IN_IP", + 512271866: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IGMP", + 512860246: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_ICMP", + 525100026: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_UDP", + 530070378: "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_RSVP", + } + OpenconfigPacketMatchTypesIPPROTOCOL_value = map[string]int32{ + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_UNSET": 0, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_GRE": 24050007, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_TCP": 38721802, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_L2TP": 81903923, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_AUTH": 203904199, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_PIM": 272904165, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IN_IP": 309674436, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IGMP": 512271866, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_ICMP": 512860246, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_UDP": 525100026, + "OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_RSVP": 530070378, + } +) + +func (x OpenconfigPacketMatchTypesIPPROTOCOL) Enum() *OpenconfigPacketMatchTypesIPPROTOCOL { + p := new(OpenconfigPacketMatchTypesIPPROTOCOL) + *p = x + return p +} + +func (x OpenconfigPacketMatchTypesIPPROTOCOL) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpenconfigPacketMatchTypesIPPROTOCOL) Descriptor() protoreflect.EnumDescriptor { + return file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[2].Descriptor() +} + +func (OpenconfigPacketMatchTypesIPPROTOCOL) Type() protoreflect.EnumType { + return &file_v1_proto_gribi_aft_enums_enums_proto_enumTypes[2] +} + +func (x OpenconfigPacketMatchTypesIPPROTOCOL) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpenconfigPacketMatchTypesIPPROTOCOL.Descriptor instead. +func (OpenconfigPacketMatchTypesIPPROTOCOL) EnumDescriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_enums_enums_proto_rawDescGZIP(), []int{2} +} + +var File_v1_proto_gribi_aft_enums_enums_proto protoreflect.FileDescriptor + +var file_v1_proto_gribi_aft_enums_enums_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, + 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2f, 0x79, + 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x91, 0x03, 0x0a, 0x29, 0x4f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, + 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x39, 0x0a, 0x2d, + 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, 0x50, + 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x48, + 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x10, 0x01, 0x1a, + 0x06, 0x82, 0x41, 0x03, 0x47, 0x52, 0x45, 0x12, 0x3b, 0x0a, 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, + 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x02, 0x1a, 0x07, 0x82, 0x41, 0x04, + 0x49, 0x50, 0x56, 0x34, 0x12, 0x3b, 0x0a, 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, + 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x03, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x49, 0x50, 0x56, + 0x36, 0x12, 0x3b, 0x0a, 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, + 0x46, 0x54, 0x54, 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, + 0x50, 0x4c, 0x53, 0x10, 0x04, 0x1a, 0x07, 0x82, 0x41, 0x04, 0x4d, 0x50, 0x4c, 0x53, 0x12, 0x3d, + 0x0a, 0x2f, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x41, 0x46, 0x54, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, + 0x4e, 0x10, 0x05, 0x1a, 0x08, 0x82, 0x41, 0x05, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x2a, 0x8e, 0x04, + 0x0a, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x4e, + 0x0a, 0x33, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, + 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x1a, 0x15, 0x82, 0x41, 0x12, 0x49, 0x50, 0x56, 0x34, + 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x42, + 0x0a, 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x10, + 0x02, 0x1a, 0x0f, 0x82, 0x41, 0x0c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, + 0x52, 0x54, 0x12, 0x4e, 0x0a, 0x33, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x45, 0x58, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x1a, 0x15, 0x82, 0x41, 0x12, + 0x49, 0x50, 0x56, 0x36, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, + 0x4c, 0x4c, 0x12, 0x44, 0x0a, 0x2e, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x5f, + 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x04, 0x1a, 0x10, 0x82, 0x41, 0x0d, 0x49, 0x4d, 0x50, 0x4c, 0x49, + 0x43, 0x49, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x12, 0x58, 0x0a, 0x38, 0x4f, 0x50, 0x45, 0x4e, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, + 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x4f, 0x50, 0x59, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, + 0x41, 0x54, 0x4f, 0x52, 0x10, 0x08, 0x1a, 0x1a, 0x82, 0x41, 0x17, 0x45, 0x4e, 0x54, 0x52, 0x4f, + 0x50, 0x59, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41, 0x54, + 0x4f, 0x52, 0x12, 0x3a, 0x0a, 0x29, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x4d, 0x50, 0x4c, 0x53, 0x54, 0x59, 0x50, 0x45, 0x53, 0x4d, 0x50, 0x4c, 0x53, 0x4c, 0x41, 0x42, + 0x45, 0x4c, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, + 0x09, 0x1a, 0x0b, 0x82, 0x41, 0x08, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x2a, 0xe0, + 0x05, 0x0a, 0x24, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, + 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x49, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x10, 0xd7, 0xf2, 0xbb, 0x0b, 0x1a, 0x09, 0x82, 0x41, 0x06, + 0x49, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x12, 0x3d, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, + 0x50, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x8a, 0xb2, 0xbb, 0x12, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, + 0x50, 0x5f, 0x54, 0x43, 0x50, 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, + 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, + 0x5f, 0x4c, 0x32, 0x54, 0x50, 0x10, 0xb3, 0x82, 0x87, 0x27, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, + 0x50, 0x5f, 0x4c, 0x32, 0x54, 0x50, 0x12, 0x3f, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, + 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, + 0x50, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0xc7, 0xa9, 0x9d, 0x61, 0x1a, 0x0a, 0x82, 0x41, 0x07, + 0x49, 0x50, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x12, 0x3e, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x49, 0x50, 0x5f, 0x50, 0x49, 0x4d, 0x10, 0xe5, 0xdf, 0x90, 0x82, 0x01, 0x1a, 0x09, 0x82, 0x41, + 0x06, 0x49, 0x50, 0x5f, 0x50, 0x49, 0x4d, 0x12, 0x42, 0x0a, 0x2d, 0x4f, 0x50, 0x45, 0x4e, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x10, 0xc4, 0x83, 0xd5, 0x93, 0x01, 0x1a, 0x0b, + 0x82, 0x41, 0x08, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x12, 0x40, 0x0a, 0x2c, 0x4f, + 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x4d, + 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, + 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x10, 0xfa, 0xcb, 0xa2, 0xf4, + 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x12, 0x40, 0x0a, + 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, 0x52, 0x4f, + 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x10, 0xd6, 0xc0, + 0xc6, 0xf4, 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x12, + 0x3e, 0x0a, 0x2b, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, + 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x10, 0xfa, + 0xc7, 0xb1, 0xfa, 0x01, 0x1a, 0x09, 0x82, 0x41, 0x06, 0x49, 0x50, 0x5f, 0x55, 0x44, 0x50, 0x12, + 0x40, 0x0a, 0x2c, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x54, 0x59, 0x50, 0x45, 0x53, 0x49, 0x50, 0x50, + 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, 0x50, 0x10, + 0xea, 0xf6, 0xe0, 0xfc, 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x49, 0x50, 0x5f, 0x52, 0x53, 0x56, + 0x50, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, + 0x61, 0x66, 0x74, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_v1_proto_gribi_aft_enums_enums_proto_rawDescOnce sync.Once + file_v1_proto_gribi_aft_enums_enums_proto_rawDescData = file_v1_proto_gribi_aft_enums_enums_proto_rawDesc +) + +func file_v1_proto_gribi_aft_enums_enums_proto_rawDescGZIP() []byte { + file_v1_proto_gribi_aft_enums_enums_proto_rawDescOnce.Do(func() { + file_v1_proto_gribi_aft_enums_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_proto_gribi_aft_enums_enums_proto_rawDescData) + }) + return file_v1_proto_gribi_aft_enums_enums_proto_rawDescData +} + +var file_v1_proto_gribi_aft_enums_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_v1_proto_gribi_aft_enums_enums_proto_goTypes = []interface{}{ + (OpenconfigAftTypesEncapsulationHeaderType)(0), // 0: gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + (OpenconfigMplsTypesMplsLabelEnum)(0), // 1: gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + (OpenconfigPacketMatchTypesIPPROTOCOL)(0), // 2: gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL +} +var file_v1_proto_gribi_aft_enums_enums_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_v1_proto_gribi_aft_enums_enums_proto_init() } +func file_v1_proto_gribi_aft_enums_enums_proto_init() { + if File_v1_proto_gribi_aft_enums_enums_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_proto_gribi_aft_enums_enums_proto_rawDesc, + NumEnums: 3, + NumMessages: 0, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_v1_proto_gribi_aft_enums_enums_proto_goTypes, + DependencyIndexes: file_v1_proto_gribi_aft_enums_enums_proto_depIdxs, + EnumInfos: file_v1_proto_gribi_aft_enums_enums_proto_enumTypes, + }.Build() + File_v1_proto_gribi_aft_enums_enums_proto = out.File + file_v1_proto_gribi_aft_enums_enums_proto_rawDesc = nil + file_v1_proto_gribi_aft_enums_enums_proto_goTypes = nil + file_v1_proto_gribi_aft_enums_enums_proto_depIdxs = nil +} diff --git a/protomap/integration_tests/testdata/gribi_aft/enums/enums.proto b/protomap/integration_tests/testdata/gribi_aft/enums/enums.proto new file mode 100644 index 000000000..bab290671 --- /dev/null +++ b/protomap/integration_tests/testdata/gribi_aft/enums/enums.proto @@ -0,0 +1,51 @@ +// gribi_aft.enums is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - github.com/openconfig/gribi/v1/yang/gribi-aft.yang +// Include paths: +// - github.com/openconfig/gribi/v1/yang/... +// - github.com/openconfig/gribi/v1/yang/deps/... +syntax = "proto3"; + +package gribi_aft.enums; + +import "github.com/openconfig/ygot/proto/yext/yext.proto"; + +option go_package = "github.com/openconfig/gribi/v1/proto/gribi_aft/enums"; + +// OpenconfigAftTypesEncapsulationHeaderType represents an enumerated type generated for the YANG enumerated type encapsulation-header-type. +enum OpenconfigAftTypesEncapsulationHeaderType { + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_UNSET = 0; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_GRE = 1 [(yext.yang_name) = "GRE"]; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV4 = 2 [(yext.yang_name) = "IPV4"]; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_IPV6 = 3 [(yext.yang_name) = "IPV6"]; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_MPLS = 4 [(yext.yang_name) = "MPLS"]; + OPENCONFIGAFTTYPESENCAPSULATIONHEADERTYPE_VXLAN = 5 [(yext.yang_name) = "VXLAN"]; +} + +// OpenconfigMplsTypesMplsLabelEnum represents an enumerated type generated for the YANG enumerated type mpls-label. +enum OpenconfigMplsTypesMplsLabelEnum { + OPENCONFIGMPLSTYPESMPLSLABELENUM_UNSET = 0; + OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV4_EXPLICIT_NULL = 1 [(yext.yang_name) = "IPV4_EXPLICIT_NULL"]; + OPENCONFIGMPLSTYPESMPLSLABELENUM_ROUTER_ALERT = 2 [(yext.yang_name) = "ROUTER_ALERT"]; + OPENCONFIGMPLSTYPESMPLSLABELENUM_IPV6_EXPLICIT_NULL = 3 [(yext.yang_name) = "IPV6_EXPLICIT_NULL"]; + OPENCONFIGMPLSTYPESMPLSLABELENUM_IMPLICIT_NULL = 4 [(yext.yang_name) = "IMPLICIT_NULL"]; + OPENCONFIGMPLSTYPESMPLSLABELENUM_ENTROPY_LABEL_INDICATOR = 8 [(yext.yang_name) = "ENTROPY_LABEL_INDICATOR"]; + OPENCONFIGMPLSTYPESMPLSLABELENUM_NO_LABEL = 9 [(yext.yang_name) = "NO_LABEL"]; +} + +// OpenconfigPacketMatchTypesIPPROTOCOL represents an enumerated type generated for the YANG identity IP_PROTOCOL. +enum OpenconfigPacketMatchTypesIPPROTOCOL { + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_UNSET = 0; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_GRE = 24050007 [(yext.yang_name) = "IP_GRE"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_TCP = 38721802 [(yext.yang_name) = "IP_TCP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_L2TP = 81903923 [(yext.yang_name) = "IP_L2TP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_AUTH = 203904199 [(yext.yang_name) = "IP_AUTH"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_PIM = 272904165 [(yext.yang_name) = "IP_PIM"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IN_IP = 309674436 [(yext.yang_name) = "IP_IN_IP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_IGMP = 512271866 [(yext.yang_name) = "IP_IGMP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_ICMP = 512860246 [(yext.yang_name) = "IP_ICMP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_UDP = 525100026 [(yext.yang_name) = "IP_UDP"]; + OPENCONFIGPACKETMATCHTYPESIPPROTOCOL_IP_RSVP = 530070378 [(yext.yang_name) = "IP_RSVP"]; +} diff --git a/protomap/integration_tests/testdata/gribi_aft/gribi_aft.pb.go b/protomap/integration_tests/testdata/gribi_aft/gribi_aft.pb.go new file mode 100644 index 000000000..4bf4809ac --- /dev/null +++ b/protomap/integration_tests/testdata/gribi_aft/gribi_aft.pb.go @@ -0,0 +1,2636 @@ +// gribi_aft is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - github.com/openconfig/gribi/v1/yang/gribi-aft.yang +// Include paths: +// - github.com/openconfig/gribi/v1/yang/... +// - github.com/openconfig/gribi/v1/yang/deps/... + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.21.0--rc1 +// source: v1/proto/gribi_aft/gribi_aft.proto + +package gribi_aft + +import ( + enums "github.com/openconfig/gribi/v1/proto/gribi_aft/enums" + _ "github.com/openconfig/ygot/proto/yext" + ywrapper "github.com/openconfig/ygot/proto/ywrapper" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Device struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Afts *Afts `protobuf:"bytes,35982132,opt,name=afts,proto3" json:"afts,omitempty"` +} + +func (x *Device) Reset() { + *x = Device{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Device) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Device) ProtoMessage() {} + +func (x *Device) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Device.ProtoReflect.Descriptor instead. +func (*Device) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{0} +} + +func (x *Device) GetAfts() *Afts { + if x != nil { + return x.Afts + } + return nil +} + +type Afts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ipv4Entry []*Afts_Ipv4EntryKey `protobuf:"bytes,410397655,rep,name=ipv4_entry,json=ipv4Entry,proto3" json:"ipv4_entry,omitempty"` + Ipv6Entry []*Afts_Ipv6EntryKey `protobuf:"bytes,403891971,rep,name=ipv6_entry,json=ipv6Entry,proto3" json:"ipv6_entry,omitempty"` + LabelEntry []*Afts_LabelEntryKey `protobuf:"bytes,153428187,rep,name=label_entry,json=labelEntry,proto3" json:"label_entry,omitempty"` + MacEntry []*Afts_MacEntryKey `protobuf:"bytes,162139969,rep,name=mac_entry,json=macEntry,proto3" json:"mac_entry,omitempty"` + NextHop []*Afts_NextHopKey `protobuf:"bytes,132654769,rep,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` + NextHopGroup []*Afts_NextHopGroupKey `protobuf:"bytes,362999033,rep,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + PolicyForwardingEntry []*Afts_PolicyForwardingEntryKey `protobuf:"bytes,269536139,rep,name=policy_forwarding_entry,json=policyForwardingEntry,proto3" json:"policy_forwarding_entry,omitempty"` +} + +func (x *Afts) Reset() { + *x = Afts{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts) ProtoMessage() {} + +func (x *Afts) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts.ProtoReflect.Descriptor instead. +func (*Afts) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1} +} + +func (x *Afts) GetIpv4Entry() []*Afts_Ipv4EntryKey { + if x != nil { + return x.Ipv4Entry + } + return nil +} + +func (x *Afts) GetIpv6Entry() []*Afts_Ipv6EntryKey { + if x != nil { + return x.Ipv6Entry + } + return nil +} + +func (x *Afts) GetLabelEntry() []*Afts_LabelEntryKey { + if x != nil { + return x.LabelEntry + } + return nil +} + +func (x *Afts) GetMacEntry() []*Afts_MacEntryKey { + if x != nil { + return x.MacEntry + } + return nil +} + +func (x *Afts) GetNextHop() []*Afts_NextHopKey { + if x != nil { + return x.NextHop + } + return nil +} + +func (x *Afts) GetNextHopGroup() []*Afts_NextHopGroupKey { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts) GetPolicyForwardingEntry() []*Afts_PolicyForwardingEntryKey { + if x != nil { + return x.PolicyForwardingEntry + } + return nil +} + +type Afts_Ipv4Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DecapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,383809427,opt,name=decapsulate_header,json=decapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"decapsulate_header,omitempty"` + EntryMetadata *ywrapper.BytesValue `protobuf:"bytes,290934374,opt,name=entry_metadata,json=entryMetadata,proto3" json:"entry_metadata,omitempty"` + NextHopGroup *ywrapper.UintValue `protobuf:"bytes,497198611,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + NextHopGroupNetworkInstance *ywrapper.StringValue `protobuf:"bytes,32856574,opt,name=next_hop_group_network_instance,json=nextHopGroupNetworkInstance,proto3" json:"next_hop_group_network_instance,omitempty"` +} + +func (x *Afts_Ipv4Entry) Reset() { + *x = Afts_Ipv4Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_Ipv4Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_Ipv4Entry) ProtoMessage() {} + +func (x *Afts_Ipv4Entry) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_Ipv4Entry.ProtoReflect.Descriptor instead. +func (*Afts_Ipv4Entry) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *Afts_Ipv4Entry) GetDecapsulateHeader() enums.OpenconfigAftTypesEncapsulationHeaderType { + if x != nil { + return x.DecapsulateHeader + } + return enums.OpenconfigAftTypesEncapsulationHeaderType(0) +} + +func (x *Afts_Ipv4Entry) GetEntryMetadata() *ywrapper.BytesValue { + if x != nil { + return x.EntryMetadata + } + return nil +} + +func (x *Afts_Ipv4Entry) GetNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts_Ipv4Entry) GetNextHopGroupNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NextHopGroupNetworkInstance + } + return nil +} + +type Afts_Ipv4EntryKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + Ipv4Entry *Afts_Ipv4Entry `protobuf:"bytes,2,opt,name=ipv4_entry,json=ipv4Entry,proto3" json:"ipv4_entry,omitempty"` +} + +func (x *Afts_Ipv4EntryKey) Reset() { + *x = Afts_Ipv4EntryKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_Ipv4EntryKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_Ipv4EntryKey) ProtoMessage() {} + +func (x *Afts_Ipv4EntryKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_Ipv4EntryKey.ProtoReflect.Descriptor instead. +func (*Afts_Ipv4EntryKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *Afts_Ipv4EntryKey) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *Afts_Ipv4EntryKey) GetIpv4Entry() *Afts_Ipv4Entry { + if x != nil { + return x.Ipv4Entry + } + return nil +} + +type Afts_Ipv6Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DecapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,328774623,opt,name=decapsulate_header,json=decapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"decapsulate_header,omitempty"` + EntryMetadata *ywrapper.BytesValue `protobuf:"bytes,11794282,opt,name=entry_metadata,json=entryMetadata,proto3" json:"entry_metadata,omitempty"` + NextHopGroup *ywrapper.UintValue `protobuf:"bytes,442121607,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + NextHopGroupNetworkInstance *ywrapper.StringValue `protobuf:"bytes,492017618,opt,name=next_hop_group_network_instance,json=nextHopGroupNetworkInstance,proto3" json:"next_hop_group_network_instance,omitempty"` +} + +func (x *Afts_Ipv6Entry) Reset() { + *x = Afts_Ipv6Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_Ipv6Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_Ipv6Entry) ProtoMessage() {} + +func (x *Afts_Ipv6Entry) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_Ipv6Entry.ProtoReflect.Descriptor instead. +func (*Afts_Ipv6Entry) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 2} +} + +func (x *Afts_Ipv6Entry) GetDecapsulateHeader() enums.OpenconfigAftTypesEncapsulationHeaderType { + if x != nil { + return x.DecapsulateHeader + } + return enums.OpenconfigAftTypesEncapsulationHeaderType(0) +} + +func (x *Afts_Ipv6Entry) GetEntryMetadata() *ywrapper.BytesValue { + if x != nil { + return x.EntryMetadata + } + return nil +} + +func (x *Afts_Ipv6Entry) GetNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts_Ipv6Entry) GetNextHopGroupNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NextHopGroupNetworkInstance + } + return nil +} + +type Afts_Ipv6EntryKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + Ipv6Entry *Afts_Ipv6Entry `protobuf:"bytes,2,opt,name=ipv6_entry,json=ipv6Entry,proto3" json:"ipv6_entry,omitempty"` +} + +func (x *Afts_Ipv6EntryKey) Reset() { + *x = Afts_Ipv6EntryKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_Ipv6EntryKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_Ipv6EntryKey) ProtoMessage() {} + +func (x *Afts_Ipv6EntryKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_Ipv6EntryKey.ProtoReflect.Descriptor instead. +func (*Afts_Ipv6EntryKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 3} +} + +func (x *Afts_Ipv6EntryKey) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *Afts_Ipv6EntryKey) GetIpv6Entry() *Afts_Ipv6Entry { + if x != nil { + return x.Ipv6Entry + } + return nil +} + +type Afts_LabelEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EntryMetadata *ywrapper.BytesValue `protobuf:"bytes,100486674,opt,name=entry_metadata,json=entryMetadata,proto3" json:"entry_metadata,omitempty"` + NextHopGroup *ywrapper.UintValue `protobuf:"bytes,307713279,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + NextHopGroupNetworkInstance *ywrapper.StringValue `protobuf:"bytes,303628026,opt,name=next_hop_group_network_instance,json=nextHopGroupNetworkInstance,proto3" json:"next_hop_group_network_instance,omitempty"` + PoppedMplsLabelStack []*Afts_LabelEntry_PoppedMplsLabelStackUnion `protobuf:"bytes,62799927,rep,name=popped_mpls_label_stack,json=poppedMplsLabelStack,proto3" json:"popped_mpls_label_stack,omitempty"` +} + +func (x *Afts_LabelEntry) Reset() { + *x = Afts_LabelEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_LabelEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_LabelEntry) ProtoMessage() {} + +func (x *Afts_LabelEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_LabelEntry.ProtoReflect.Descriptor instead. +func (*Afts_LabelEntry) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 4} +} + +func (x *Afts_LabelEntry) GetEntryMetadata() *ywrapper.BytesValue { + if x != nil { + return x.EntryMetadata + } + return nil +} + +func (x *Afts_LabelEntry) GetNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts_LabelEntry) GetNextHopGroupNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NextHopGroupNetworkInstance + } + return nil +} + +func (x *Afts_LabelEntry) GetPoppedMplsLabelStack() []*Afts_LabelEntry_PoppedMplsLabelStackUnion { + if x != nil { + return x.PoppedMplsLabelStack + } + return nil +} + +type Afts_LabelEntryKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Label: + // *Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum + // *Afts_LabelEntryKey_LabelUint64 + Label isAfts_LabelEntryKey_Label `protobuf_oneof:"label"` + LabelEntry *Afts_LabelEntry `protobuf:"bytes,2,opt,name=label_entry,json=labelEntry,proto3" json:"label_entry,omitempty"` +} + +func (x *Afts_LabelEntryKey) Reset() { + *x = Afts_LabelEntryKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_LabelEntryKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_LabelEntryKey) ProtoMessage() {} + +func (x *Afts_LabelEntryKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_LabelEntryKey.ProtoReflect.Descriptor instead. +func (*Afts_LabelEntryKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 5} +} + +func (m *Afts_LabelEntryKey) GetLabel() isAfts_LabelEntryKey_Label { + if m != nil { + return m.Label + } + return nil +} + +func (x *Afts_LabelEntryKey) GetLabelOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x, ok := x.GetLabel().(*Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum); ok { + return x.LabelOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_LabelEntryKey) GetLabelUint64() uint64 { + if x, ok := x.GetLabel().(*Afts_LabelEntryKey_LabelUint64); ok { + return x.LabelUint64 + } + return 0 +} + +func (x *Afts_LabelEntryKey) GetLabelEntry() *Afts_LabelEntry { + if x != nil { + return x.LabelEntry + } + return nil +} + +type isAfts_LabelEntryKey_Label interface { + isAfts_LabelEntryKey_Label() +} + +type Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum struct { + LabelOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,505941675,opt,name=label_openconfigmplstypesmplslabelenum,json=labelOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum,oneof"` +} + +type Afts_LabelEntryKey_LabelUint64 struct { + LabelUint64 uint64 `protobuf:"varint,50948579,opt,name=label_uint64,json=labelUint64,proto3,oneof"` +} + +func (*Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum) isAfts_LabelEntryKey_Label() {} + +func (*Afts_LabelEntryKey_LabelUint64) isAfts_LabelEntryKey_Label() {} + +type Afts_MacEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EntryMetadata *ywrapper.BytesValue `protobuf:"bytes,397462192,opt,name=entry_metadata,json=entryMetadata,proto3" json:"entry_metadata,omitempty"` + NextHopGroup *ywrapper.UintValue `protobuf:"bytes,320343041,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + NextHopGroupNetworkInstance *ywrapper.StringValue `protobuf:"bytes,264313412,opt,name=next_hop_group_network_instance,json=nextHopGroupNetworkInstance,proto3" json:"next_hop_group_network_instance,omitempty"` +} + +func (x *Afts_MacEntry) Reset() { + *x = Afts_MacEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_MacEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_MacEntry) ProtoMessage() {} + +func (x *Afts_MacEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_MacEntry.ProtoReflect.Descriptor instead. +func (*Afts_MacEntry) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 6} +} + +func (x *Afts_MacEntry) GetEntryMetadata() *ywrapper.BytesValue { + if x != nil { + return x.EntryMetadata + } + return nil +} + +func (x *Afts_MacEntry) GetNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts_MacEntry) GetNextHopGroupNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NextHopGroupNetworkInstance + } + return nil +} + +type Afts_MacEntryKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MacAddress string `protobuf:"bytes,1,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` + MacEntry *Afts_MacEntry `protobuf:"bytes,2,opt,name=mac_entry,json=macEntry,proto3" json:"mac_entry,omitempty"` +} + +func (x *Afts_MacEntryKey) Reset() { + *x = Afts_MacEntryKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_MacEntryKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_MacEntryKey) ProtoMessage() {} + +func (x *Afts_MacEntryKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_MacEntryKey.ProtoReflect.Descriptor instead. +func (*Afts_MacEntryKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 7} +} + +func (x *Afts_MacEntryKey) GetMacAddress() string { + if x != nil { + return x.MacAddress + } + return "" +} + +func (x *Afts_MacEntryKey) GetMacEntry() *Afts_MacEntry { + if x != nil { + return x.MacEntry + } + return nil +} + +type Afts_NextHop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DecapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,104970793,opt,name=decapsulate_header,json=decapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"decapsulate_header,omitempty"` + EncapsulateHeader enums.OpenconfigAftTypesEncapsulationHeaderType `protobuf:"varint,69966061,opt,name=encapsulate_header,json=encapsulateHeader,proto3,enum=gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType" json:"encapsulate_header,omitempty"` + InterfaceRef *Afts_NextHop_InterfaceRef `protobuf:"bytes,293682821,opt,name=interface_ref,json=interfaceRef,proto3" json:"interface_ref,omitempty"` + IpAddress *ywrapper.StringValue `protobuf:"bytes,242108262,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` + IpInIp *Afts_NextHop_IpInIp `protobuf:"bytes,157296597,opt,name=ip_in_ip,json=ipInIp,proto3" json:"ip_in_ip,omitempty"` + MacAddress *ywrapper.StringValue `protobuf:"bytes,404609192,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` + NetworkInstance *ywrapper.StringValue `protobuf:"bytes,232391308,opt,name=network_instance,json=networkInstance,proto3" json:"network_instance,omitempty"` + PopTopLabel *ywrapper.BoolValue `protobuf:"bytes,382175404,opt,name=pop_top_label,json=popTopLabel,proto3" json:"pop_top_label,omitempty"` + PushedMplsLabelStack []*Afts_NextHop_PushedMplsLabelStackUnion `protobuf:"bytes,489592660,rep,name=pushed_mpls_label_stack,json=pushedMplsLabelStack,proto3" json:"pushed_mpls_label_stack,omitempty"` + TunnelSrcIpAddress *ywrapper.StringValue `protobuf:"bytes,174262178,opt,name=tunnel_src_ip_address,json=tunnelSrcIpAddress,proto3" json:"tunnel_src_ip_address,omitempty"` + VniLabel *ywrapper.UintValue `protobuf:"bytes,209933130,opt,name=vni_label,json=vniLabel,proto3" json:"vni_label,omitempty"` +} + +func (x *Afts_NextHop) Reset() { + *x = Afts_NextHop{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop) ProtoMessage() {} + +func (x *Afts_NextHop) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop.ProtoReflect.Descriptor instead. +func (*Afts_NextHop) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8} +} + +func (x *Afts_NextHop) GetDecapsulateHeader() enums.OpenconfigAftTypesEncapsulationHeaderType { + if x != nil { + return x.DecapsulateHeader + } + return enums.OpenconfigAftTypesEncapsulationHeaderType(0) +} + +func (x *Afts_NextHop) GetEncapsulateHeader() enums.OpenconfigAftTypesEncapsulationHeaderType { + if x != nil { + return x.EncapsulateHeader + } + return enums.OpenconfigAftTypesEncapsulationHeaderType(0) +} + +func (x *Afts_NextHop) GetInterfaceRef() *Afts_NextHop_InterfaceRef { + if x != nil { + return x.InterfaceRef + } + return nil +} + +func (x *Afts_NextHop) GetIpAddress() *ywrapper.StringValue { + if x != nil { + return x.IpAddress + } + return nil +} + +func (x *Afts_NextHop) GetIpInIp() *Afts_NextHop_IpInIp { + if x != nil { + return x.IpInIp + } + return nil +} + +func (x *Afts_NextHop) GetMacAddress() *ywrapper.StringValue { + if x != nil { + return x.MacAddress + } + return nil +} + +func (x *Afts_NextHop) GetNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NetworkInstance + } + return nil +} + +func (x *Afts_NextHop) GetPopTopLabel() *ywrapper.BoolValue { + if x != nil { + return x.PopTopLabel + } + return nil +} + +func (x *Afts_NextHop) GetPushedMplsLabelStack() []*Afts_NextHop_PushedMplsLabelStackUnion { + if x != nil { + return x.PushedMplsLabelStack + } + return nil +} + +func (x *Afts_NextHop) GetTunnelSrcIpAddress() *ywrapper.StringValue { + if x != nil { + return x.TunnelSrcIpAddress + } + return nil +} + +func (x *Afts_NextHop) GetVniLabel() *ywrapper.UintValue { + if x != nil { + return x.VniLabel + } + return nil +} + +type Afts_NextHopGroup struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackupNextHopGroup *ywrapper.UintValue `protobuf:"bytes,366506898,opt,name=backup_next_hop_group,json=backupNextHopGroup,proto3" json:"backup_next_hop_group,omitempty"` + Color *ywrapper.UintValue `protobuf:"bytes,242427279,opt,name=color,proto3" json:"color,omitempty"` + NextHop []*Afts_NextHopGroup_NextHopKey `protobuf:"bytes,211071474,rep,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` +} + +func (x *Afts_NextHopGroup) Reset() { + *x = Afts_NextHopGroup{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHopGroup) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroup) ProtoMessage() {} + +func (x *Afts_NextHopGroup) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroup.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroup) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9} +} + +func (x *Afts_NextHopGroup) GetBackupNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.BackupNextHopGroup + } + return nil +} + +func (x *Afts_NextHopGroup) GetColor() *ywrapper.UintValue { + if x != nil { + return x.Color + } + return nil +} + +func (x *Afts_NextHopGroup) GetNextHop() []*Afts_NextHopGroup_NextHopKey { + if x != nil { + return x.NextHop + } + return nil +} + +type Afts_NextHopGroupKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + NextHopGroup *Afts_NextHopGroup `protobuf:"bytes,2,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` +} + +func (x *Afts_NextHopGroupKey) Reset() { + *x = Afts_NextHopGroupKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHopGroupKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroupKey) ProtoMessage() {} + +func (x *Afts_NextHopGroupKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroupKey.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroupKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 10} +} + +func (x *Afts_NextHopGroupKey) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Afts_NextHopGroupKey) GetNextHopGroup() *Afts_NextHopGroup { + if x != nil { + return x.NextHopGroup + } + return nil +} + +type Afts_NextHopKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + NextHop *Afts_NextHop `protobuf:"bytes,2,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` +} + +func (x *Afts_NextHopKey) Reset() { + *x = Afts_NextHopKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHopKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopKey) ProtoMessage() {} + +func (x *Afts_NextHopKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopKey.ProtoReflect.Descriptor instead. +func (*Afts_NextHopKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 11} +} + +func (x *Afts_NextHopKey) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *Afts_NextHopKey) GetNextHop() *Afts_NextHop { + if x != nil { + return x.NextHop + } + return nil +} + +type Afts_PolicyForwardingEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EntryMetadata *ywrapper.BytesValue `protobuf:"bytes,141950242,opt,name=entry_metadata,json=entryMetadata,proto3" json:"entry_metadata,omitempty"` + IpDscp *ywrapper.UintValue `protobuf:"bytes,350830798,opt,name=ip_dscp,json=ipDscp,proto3" json:"ip_dscp,omitempty"` + IpPrefix *ywrapper.StringValue `protobuf:"bytes,66278688,opt,name=ip_prefix,json=ipPrefix,proto3" json:"ip_prefix,omitempty"` + // Types that are assignable to IpProtocol: + // *Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol + // *Afts_PolicyForwardingEntry_IpProtocolUint64 + IpProtocol isAfts_PolicyForwardingEntry_IpProtocol `protobuf_oneof:"ip_protocol"` + L4DstPort *ywrapper.UintValue `protobuf:"bytes,447405406,opt,name=l4_dst_port,json=l4DstPort,proto3" json:"l4_dst_port,omitempty"` + L4SrcPort *ywrapper.UintValue `protobuf:"bytes,502173263,opt,name=l4_src_port,json=l4SrcPort,proto3" json:"l4_src_port,omitempty"` + MacAddress *ywrapper.StringValue `protobuf:"bytes,422272134,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"` + // Types that are assignable to MplsLabel: + // *Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum + // *Afts_PolicyForwardingEntry_MplsLabelUint64 + MplsLabel isAfts_PolicyForwardingEntry_MplsLabel `protobuf_oneof:"mpls_label"` + MplsTc *ywrapper.UintValue `protobuf:"bytes,281754514,opt,name=mpls_tc,json=mplsTc,proto3" json:"mpls_tc,omitempty"` + NextHopGroup *ywrapper.UintValue `protobuf:"bytes,188303215,opt,name=next_hop_group,json=nextHopGroup,proto3" json:"next_hop_group,omitempty"` + NextHopGroupNetworkInstance *ywrapper.StringValue `protobuf:"bytes,466188650,opt,name=next_hop_group_network_instance,json=nextHopGroupNetworkInstance,proto3" json:"next_hop_group_network_instance,omitempty"` +} + +func (x *Afts_PolicyForwardingEntry) Reset() { + *x = Afts_PolicyForwardingEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_PolicyForwardingEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_PolicyForwardingEntry) ProtoMessage() {} + +func (x *Afts_PolicyForwardingEntry) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_PolicyForwardingEntry.ProtoReflect.Descriptor instead. +func (*Afts_PolicyForwardingEntry) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 12} +} + +func (x *Afts_PolicyForwardingEntry) GetEntryMetadata() *ywrapper.BytesValue { + if x != nil { + return x.EntryMetadata + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetIpDscp() *ywrapper.UintValue { + if x != nil { + return x.IpDscp + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetIpPrefix() *ywrapper.StringValue { + if x != nil { + return x.IpPrefix + } + return nil +} + +func (m *Afts_PolicyForwardingEntry) GetIpProtocol() isAfts_PolicyForwardingEntry_IpProtocol { + if m != nil { + return m.IpProtocol + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetIpProtocolOpenconfigpacketmatchtypesipprotocol() enums.OpenconfigPacketMatchTypesIPPROTOCOL { + if x, ok := x.GetIpProtocol().(*Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol); ok { + return x.IpProtocolOpenconfigpacketmatchtypesipprotocol + } + return enums.OpenconfigPacketMatchTypesIPPROTOCOL(0) +} + +func (x *Afts_PolicyForwardingEntry) GetIpProtocolUint64() uint64 { + if x, ok := x.GetIpProtocol().(*Afts_PolicyForwardingEntry_IpProtocolUint64); ok { + return x.IpProtocolUint64 + } + return 0 +} + +func (x *Afts_PolicyForwardingEntry) GetL4DstPort() *ywrapper.UintValue { + if x != nil { + return x.L4DstPort + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetL4SrcPort() *ywrapper.UintValue { + if x != nil { + return x.L4SrcPort + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetMacAddress() *ywrapper.StringValue { + if x != nil { + return x.MacAddress + } + return nil +} + +func (m *Afts_PolicyForwardingEntry) GetMplsLabel() isAfts_PolicyForwardingEntry_MplsLabel { + if m != nil { + return m.MplsLabel + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetMplsLabelOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x, ok := x.GetMplsLabel().(*Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum); ok { + return x.MplsLabelOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_PolicyForwardingEntry) GetMplsLabelUint64() uint64 { + if x, ok := x.GetMplsLabel().(*Afts_PolicyForwardingEntry_MplsLabelUint64); ok { + return x.MplsLabelUint64 + } + return 0 +} + +func (x *Afts_PolicyForwardingEntry) GetMplsTc() *ywrapper.UintValue { + if x != nil { + return x.MplsTc + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetNextHopGroup() *ywrapper.UintValue { + if x != nil { + return x.NextHopGroup + } + return nil +} + +func (x *Afts_PolicyForwardingEntry) GetNextHopGroupNetworkInstance() *ywrapper.StringValue { + if x != nil { + return x.NextHopGroupNetworkInstance + } + return nil +} + +type isAfts_PolicyForwardingEntry_IpProtocol interface { + isAfts_PolicyForwardingEntry_IpProtocol() +} + +type Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol struct { + IpProtocolOpenconfigpacketmatchtypesipprotocol enums.OpenconfigPacketMatchTypesIPPROTOCOL `protobuf:"varint,157826780,opt,name=ip_protocol_openconfigpacketmatchtypesipprotocol,json=ipProtocolOpenconfigpacketmatchtypesipprotocol,proto3,enum=gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL,oneof"` +} + +type Afts_PolicyForwardingEntry_IpProtocolUint64 struct { + IpProtocolUint64 uint64 `protobuf:"varint,248927945,opt,name=ip_protocol_uint64,json=ipProtocolUint64,proto3,oneof"` +} + +func (*Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol) isAfts_PolicyForwardingEntry_IpProtocol() { +} + +func (*Afts_PolicyForwardingEntry_IpProtocolUint64) isAfts_PolicyForwardingEntry_IpProtocol() {} + +type isAfts_PolicyForwardingEntry_MplsLabel interface { + isAfts_PolicyForwardingEntry_MplsLabel() +} + +type Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum struct { + MplsLabelOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,47620234,opt,name=mpls_label_openconfigmplstypesmplslabelenum,json=mplsLabelOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum,oneof"` +} + +type Afts_PolicyForwardingEntry_MplsLabelUint64 struct { + MplsLabelUint64 uint64 `protobuf:"varint,306275022,opt,name=mpls_label_uint64,json=mplsLabelUint64,proto3,oneof"` +} + +func (*Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum) isAfts_PolicyForwardingEntry_MplsLabel() { +} + +func (*Afts_PolicyForwardingEntry_MplsLabelUint64) isAfts_PolicyForwardingEntry_MplsLabel() {} + +type Afts_PolicyForwardingEntryKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + PolicyForwardingEntry *Afts_PolicyForwardingEntry `protobuf:"bytes,2,opt,name=policy_forwarding_entry,json=policyForwardingEntry,proto3" json:"policy_forwarding_entry,omitempty"` +} + +func (x *Afts_PolicyForwardingEntryKey) Reset() { + *x = Afts_PolicyForwardingEntryKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_PolicyForwardingEntryKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_PolicyForwardingEntryKey) ProtoMessage() {} + +func (x *Afts_PolicyForwardingEntryKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_PolicyForwardingEntryKey.ProtoReflect.Descriptor instead. +func (*Afts_PolicyForwardingEntryKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 13} +} + +func (x *Afts_PolicyForwardingEntryKey) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *Afts_PolicyForwardingEntryKey) GetPolicyForwardingEntry() *Afts_PolicyForwardingEntry { + if x != nil { + return x.PolicyForwardingEntry + } + return nil +} + +type Afts_LabelEntry_PoppedMplsLabelStackUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PoppedMplsLabelStackOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,524692292,opt,name=popped_mpls_label_stack_openconfigmplstypesmplslabelenum,json=poppedMplsLabelStackOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum" json:"popped_mpls_label_stack_openconfigmplstypesmplslabelenum,omitempty"` + PoppedMplsLabelStackUint64 uint64 `protobuf:"varint,510588408,opt,name=popped_mpls_label_stack_uint64,json=poppedMplsLabelStackUint64,proto3" json:"popped_mpls_label_stack_uint64,omitempty"` +} + +func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) Reset() { + *x = Afts_LabelEntry_PoppedMplsLabelStackUnion{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_LabelEntry_PoppedMplsLabelStackUnion) ProtoMessage() {} + +func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_LabelEntry_PoppedMplsLabelStackUnion.ProtoReflect.Descriptor instead. +func (*Afts_LabelEntry_PoppedMplsLabelStackUnion) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 4, 0} +} + +func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) GetPoppedMplsLabelStackOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x != nil { + return x.PoppedMplsLabelStackOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_LabelEntry_PoppedMplsLabelStackUnion) GetPoppedMplsLabelStackUint64() uint64 { + if x != nil { + return x.PoppedMplsLabelStackUint64 + } + return 0 +} + +type Afts_NextHop_InterfaceRef struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Interface *ywrapper.StringValue `protobuf:"bytes,366751031,opt,name=interface,proto3" json:"interface,omitempty"` + Subinterface *ywrapper.UintValue `protobuf:"bytes,488145333,opt,name=subinterface,proto3" json:"subinterface,omitempty"` +} + +func (x *Afts_NextHop_InterfaceRef) Reset() { + *x = Afts_NextHop_InterfaceRef{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHop_InterfaceRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_InterfaceRef) ProtoMessage() {} + +func (x *Afts_NextHop_InterfaceRef) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_InterfaceRef.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_InterfaceRef) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 0} +} + +func (x *Afts_NextHop_InterfaceRef) GetInterface() *ywrapper.StringValue { + if x != nil { + return x.Interface + } + return nil +} + +func (x *Afts_NextHop_InterfaceRef) GetSubinterface() *ywrapper.UintValue { + if x != nil { + return x.Subinterface + } + return nil +} + +type Afts_NextHop_IpInIp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DstIp *ywrapper.StringValue `protobuf:"bytes,184775743,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"` + SrcIp *ywrapper.StringValue `protobuf:"bytes,220560118,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"` +} + +func (x *Afts_NextHop_IpInIp) Reset() { + *x = Afts_NextHop_IpInIp{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHop_IpInIp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_IpInIp) ProtoMessage() {} + +func (x *Afts_NextHop_IpInIp) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_IpInIp.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_IpInIp) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 1} +} + +func (x *Afts_NextHop_IpInIp) GetDstIp() *ywrapper.StringValue { + if x != nil { + return x.DstIp + } + return nil +} + +func (x *Afts_NextHop_IpInIp) GetSrcIp() *ywrapper.StringValue { + if x != nil { + return x.SrcIp + } + return nil +} + +type Afts_NextHop_PushedMplsLabelStackUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PushedMplsLabelStackOpenconfigmplstypesmplslabelenum enums.OpenconfigMplsTypesMplsLabelEnum `protobuf:"varint,307755077,opt,name=pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,json=pushedMplsLabelStackOpenconfigmplstypesmplslabelenum,proto3,enum=gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum" json:"pushed_mpls_label_stack_openconfigmplstypesmplslabelenum,omitempty"` + PushedMplsLabelStackUint64 uint64 `protobuf:"varint,47493573,opt,name=pushed_mpls_label_stack_uint64,json=pushedMplsLabelStackUint64,proto3" json:"pushed_mpls_label_stack_uint64,omitempty"` +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) Reset() { + *x = Afts_NextHop_PushedMplsLabelStackUnion{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHop_PushedMplsLabelStackUnion) ProtoMessage() {} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHop_PushedMplsLabelStackUnion.ProtoReflect.Descriptor instead. +func (*Afts_NextHop_PushedMplsLabelStackUnion) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 8, 2} +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackOpenconfigmplstypesmplslabelenum() enums.OpenconfigMplsTypesMplsLabelEnum { + if x != nil { + return x.PushedMplsLabelStackOpenconfigmplstypesmplslabelenum + } + return enums.OpenconfigMplsTypesMplsLabelEnum(0) +} + +func (x *Afts_NextHop_PushedMplsLabelStackUnion) GetPushedMplsLabelStackUint64() uint64 { + if x != nil { + return x.PushedMplsLabelStackUint64 + } + return 0 +} + +type Afts_NextHopGroup_NextHop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Weight *ywrapper.UintValue `protobuf:"bytes,202140175,opt,name=weight,proto3" json:"weight,omitempty"` +} + +func (x *Afts_NextHopGroup_NextHop) Reset() { + *x = Afts_NextHopGroup_NextHop{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHopGroup_NextHop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroup_NextHop) ProtoMessage() {} + +func (x *Afts_NextHopGroup_NextHop) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroup_NextHop.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroup_NextHop) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 0} +} + +func (x *Afts_NextHopGroup_NextHop) GetWeight() *ywrapper.UintValue { + if x != nil { + return x.Weight + } + return nil +} + +type Afts_NextHopGroup_NextHopKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + NextHop *Afts_NextHopGroup_NextHop `protobuf:"bytes,2,opt,name=next_hop,json=nextHop,proto3" json:"next_hop,omitempty"` +} + +func (x *Afts_NextHopGroup_NextHopKey) Reset() { + *x = Afts_NextHopGroup_NextHopKey{} + if protoimpl.UnsafeEnabled { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Afts_NextHopGroup_NextHopKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Afts_NextHopGroup_NextHopKey) ProtoMessage() {} + +func (x *Afts_NextHopGroup_NextHopKey) ProtoReflect() protoreflect.Message { + mi := &file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Afts_NextHopGroup_NextHopKey.ProtoReflect.Descriptor instead. +func (*Afts_NextHopGroup_NextHopKey) Descriptor() ([]byte, []int) { + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP(), []int{1, 9, 1} +} + +func (x *Afts_NextHopGroup_NextHopKey) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *Afts_NextHopGroup_NextHopKey) GetNextHop() *Afts_NextHopGroup_NextHop { + if x != nil { + return x.NextHop + } + return nil +} + +var File_v1_proto_gribi_aft_gribi_aft_proto protoreflect.FileDescriptor + +var file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x5f, 0x61, 0x66, 0x74, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x1a, + 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2f, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x79, 0x65, 0x78, 0x74, + 0x2f, 0x79, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2f, + 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x3a, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x61, + 0x66, 0x74, 0x73, 0x18, 0xb4, 0x96, 0x94, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, + 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x42, 0x08, 0x82, + 0x41, 0x05, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x52, 0x04, 0x61, 0x66, 0x74, 0x73, 0x22, 0x97, 0x4d, + 0x0a, 0x04, 0x41, 0x66, 0x74, 0x73, 0x12, 0x61, 0x0a, 0x0a, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0xd7, 0xd7, 0xd8, 0xc3, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, + 0x49, 0x70, 0x76, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x42, 0x20, 0x82, 0x41, + 0x1d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x69, 0x70, 0x76, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x61, 0x0a, 0x0a, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x83, 0xce, 0xcb, 0xc0, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, + 0x74, 0x73, 0x2e, 0x49, 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x42, + 0x20, 0x82, 0x41, 0x1d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x75, + 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x09, 0x69, 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x5c, 0x0a, 0x0b, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xdb, 0xc1, 0x94, 0x49, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, + 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x4b, 0x65, 0x79, 0x42, 0x19, 0x82, 0x41, 0x16, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, + 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x09, 0x6d, 0x61, + 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xc1, 0x9e, 0xa8, 0x4d, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, + 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x42, 0x1b, 0x82, + 0x41, 0x18, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, + 0x18, 0xb1, 0xcd, 0xa0, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x1b, 0x82, 0x41, 0x18, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, 0x72, 0x0a, 0x0e, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xf9, 0xd9, + 0x8b, 0xad, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, + 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x27, 0x82, 0x41, 0x24, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x98, 0x01, 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x8b, 0x97, 0xc3, 0x80, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x42, + 0x32, 0x82, 0x41, 0x2f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x15, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xcd, 0x04, 0x0a, 0x09, 0x49, + 0x70, 0x76, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0xa8, 0x01, 0x0a, 0x12, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x93, 0xef, 0x81, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, + 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, + 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x52, 0x11, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x76, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xe6, 0x9c, 0xdd, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x35, 0x82, 0x41, 0x32, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, + 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x74, 0x0a, 0x0e, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x93, 0xcc, + 0x8a, 0xed, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x35, 0x82, 0x41, + 0x32, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0xa6, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xfe, 0xb3, 0xd5, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x46, 0x82, 0x41, 0x43, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, + 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x6e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0xb4, 0x01, 0x0a, 0x0c, 0x49, + 0x70, 0x76, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x6a, 0x0a, 0x06, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x52, 0x82, 0x41, 0x4f, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x2f, 0x69, 0x70, 0x76, 0x34, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, + 0x76, 0x34, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, + 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x38, 0x0a, 0x0a, 0x69, 0x70, 0x76, 0x34, 0x5f, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x49, 0x70, 0x76, + 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x69, 0x70, 0x76, 0x34, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x1a, 0xcd, 0x04, 0x0a, 0x09, 0x49, 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0xa8, 0x01, 0x0a, 0x12, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0xdf, 0xe7, 0xe2, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, + 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x39, 0x82, 0x41, + 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x75, 0x0a, 0x0e, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xea, 0xee, 0xcf, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x35, 0x82, 0x41, 0x32, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x74, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x87, 0xfb, 0xe8, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x35, 0x82, 0x41, 0x32, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, + 0x36, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xa7, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xd2, 0xaf, 0xce, 0xea, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x46, 0x82, 0x41, + 0x43, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x1a, 0xb4, 0x01, 0x0a, 0x0c, 0x49, 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, + 0x65, 0x79, 0x12, 0x6a, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x52, 0x82, 0x41, 0x4f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, + 0x36, 0x2d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x75, 0x6e, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x2f, 0x69, 0x70, 0x76, 0x36, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x38, + 0x0a, 0x0a, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, + 0x66, 0x74, 0x73, 0x2e, 0x49, 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x69, + 0x70, 0x76, 0x36, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xc3, 0x07, 0x0a, 0x0a, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6e, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x92, 0x9c, 0xf5, 0x2f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2e, 0x82, 0x41, 0x2b, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2d, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6d, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xff, 0xa9, 0xdd, 0x92, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2e, 0x82, 0x41, 0x2b, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xa0, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xfa, 0xfd, 0xe3, 0x90, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3f, 0x82, 0x41, 0x3c, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x6e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x70, 0x6f, + 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0xb7, 0x80, 0xf9, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, + 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3a, 0x90, 0x41, 0x01, 0x82, 0x41, 0x34, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x2d, + 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x52, 0x14, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x1a, 0x85, 0x03, 0x0a, 0x19, 0x50, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, + 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0xe6, 0x01, 0x0a, 0x38, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, + 0x6d, 0x18, 0xc4, 0xd6, 0x98, 0xfa, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x37, + 0x82, 0x41, 0x34, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x34, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, + 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x7f, 0x0a, + 0x1e, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, + 0xf8, 0xeb, 0xbb, 0xf3, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x37, 0x82, 0x41, 0x34, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x2d, 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x52, 0x1a, 0x70, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x1a, 0x96, + 0x03, 0x0a, 0x0d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, + 0x12, 0xd2, 0x01, 0x0a, 0x26, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, + 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xab, 0x9d, 0xa0, 0xf1, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x42, 0x82, 0x41, 0x3f, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7c, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x25, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, + 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x6a, 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x75, + 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xe3, 0xd3, 0xa5, 0x18, 0x20, 0x01, 0x28, 0x04, 0x42, 0x42, + 0x82, 0x41, 0x3f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6d, 0x70, 0x6c, 0x73, + 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, + 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x07, + 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0x92, 0x03, 0x0a, 0x08, 0x4d, 0x61, 0x63, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x71, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xb0, 0x95, 0xc3, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x30, 0x82, 0x41, 0x2d, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2d, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6f, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x81, 0x98, 0xe0, 0x98, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x30, 0x82, 0x41, 0x2d, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x2d, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xa1, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xc4, 0xb4, 0x84, + 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x41, 0x82, 0x41, + 0x3e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, + 0x6d, 0x61, 0x63, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2d, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0xb9, 0x01, 0x0a, + 0x0b, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x73, 0x0a, 0x0b, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x52, 0x82, 0x41, 0x4f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, + 0x6d, 0x61, 0x63, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x35, 0x0a, 0x09, 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, + 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0xde, 0x11, 0x0a, 0x07, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0xa9, 0xf4, 0x86, 0x32, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, + 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x34, 0x82, 0x41, 0x31, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x2d, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x64, 0x65, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0xed, 0xb1, 0xae, 0x21, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x45, 0x6e, + 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x34, 0x82, 0x41, 0x31, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x2d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x11, 0x65, 0x6e, 0x63, + 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x78, + 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, + 0x85, 0xfd, 0x84, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x42, + 0x29, 0x82, 0x41, 0x26, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x66, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x65, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xe6, 0x8e, 0xb9, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2c, 0x82, 0x41, 0x29, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x61, 0x0a, 0x08, 0x69, 0x70, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x18, 0xd5, 0xcf, 0x80, 0x4b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, + 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x2e, 0x49, 0x70, + 0x49, 0x6e, 0x49, 0x70, 0x42, 0x24, 0x82, 0x41, 0x21, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, + 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x2f, 0x69, 0x70, 0x2d, 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x52, 0x06, 0x69, 0x70, 0x49, 0x6e, + 0x49, 0x70, 0x12, 0x69, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0xa8, 0xb1, 0xf7, 0xc0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x77, 0x0a, + 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x8c, 0x85, 0xe8, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x32, 0x82, 0x41, 0x2f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0d, 0x70, 0x6f, 0x70, 0x5f, 0x74, 0x6f, + 0x70, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0xac, 0x91, 0x9e, 0xb6, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x2f, 0x82, 0x41, 0x2c, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x6f, 0x70, 0x2d, 0x74, 0x6f, + 0x70, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0b, 0x70, 0x6f, 0x70, 0x54, 0x6f, 0x70, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x12, 0xaa, 0x01, 0x0a, 0x17, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x18, 0xd4, 0xae, 0xba, 0xe9, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, + 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3c, 0x90, + 0x41, 0x01, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, 0x73, 0x2d, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x14, 0x70, 0x75, 0x73, + 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x63, + 0x6b, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0xa2, 0x8f, 0x8c, 0x53, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x37, 0x82, 0x41, 0x34, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x2d, 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x2d, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x72, 0x63, 0x49, + 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x76, 0x6e, 0x69, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0xca, 0xa6, 0x8d, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x2b, 0x82, 0x41, 0x28, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x6e, 0x69, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x52, 0x08, 0x76, 0x6e, 0x69, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0xfd, 0x01, 0x0a, 0x0c, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x72, 0x0a, 0x09, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0xb7, 0xda, 0xf0, 0xae, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x2d, 0x72, 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, + 0x79, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, + 0xb5, 0x83, 0xe2, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x3c, + 0x82, 0x41, 0x39, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x2d, 0x72, 0x65, 0x66, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x73, 0x75, 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, + 0x62, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x1a, 0xd0, 0x01, 0x0a, 0x06, 0x49, + 0x70, 0x49, 0x6e, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, + 0xbf, 0xe8, 0x8d, 0x58, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x70, 0x2d, + 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x73, 0x74, 0x2d, + 0x69, 0x70, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x12, 0x62, 0x0a, 0x06, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x18, 0xf6, 0xf5, 0x95, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x31, 0x82, 0x41, 0x2e, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2f, 0x69, 0x70, 0x2d, 0x69, 0x6e, 0x2d, 0x69, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, + 0x73, 0x72, 0x63, 0x2d, 0x69, 0x70, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x1a, 0x89, 0x03, + 0x0a, 0x19, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0xe8, 0x01, 0x0a, 0x38, + 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xc5, 0xf0, 0xdf, 0x92, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, + 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x70, 0x6c, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, + 0x6d, 0x70, 0x6c, 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x52, 0x34, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x6d, 0x70, 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x80, 0x01, 0x0a, 0x1e, 0x70, 0x75, 0x73, 0x68, 0x65, + 0x64, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xc5, 0xe3, 0xd2, 0x16, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x39, 0x82, 0x41, 0x36, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x2d, 0x6d, 0x70, 0x6c, + 0x73, 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x1a, 0x70, + 0x75, 0x73, 0x68, 0x65, 0x64, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x1a, 0xfb, 0x05, 0x0a, 0x0c, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x18, 0x92, 0xe7, 0xe1, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, + 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x61, 0x0a, 0x05, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x8f, 0xcb, 0xcc, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x33, 0x82, 0x41, 0x30, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, + 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, + 0x81, 0x01, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0xf2, 0xe3, 0xd2, + 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, + 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x3a, + 0x82, 0x41, 0x37, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x1a, 0x82, 0x01, 0x0a, 0x07, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x12, + 0x77, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x8f, 0xd4, 0xb1, 0x60, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, + 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, + 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0xec, 0x01, 0x0a, 0x0a, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x9c, 0x01, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x85, 0x01, 0x82, 0x41, 0x81, 0x01, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, + 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, + 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, + 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x07, + 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xbf, 0x01, 0x0a, 0x0f, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x68, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x64, 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x69, + 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, + 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x9e, 0x01, 0x0a, 0x0a, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x46, 0x82, 0x41, 0x43, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, + 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x7c, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x73, + 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x32, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, + 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x62, 0x69, + 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x1a, 0xa1, 0x0f, 0x0a, 0x15, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x87, 0x01, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0xa2, 0xfa, 0xd7, 0x43, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, + 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x72, + 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0xce, 0x81, 0xa5, 0xa7, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, + 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x64, 0x73, 0x63, 0x70, 0x52, 0x06, 0x69, 0x70, 0x44, 0x73, + 0x63, 0x70, 0x12, 0x79, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0xa0, 0xaa, 0xcd, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x42, 0x82, 0x41, 0x3f, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x52, 0x08, 0x69, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0xea, 0x01, + 0x0a, 0x30, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0xdc, 0xfd, 0xa0, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x72, + 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x73, 0x49, 0x50, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x2e, 0x69, 0x70, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x69, 0x70, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x77, 0x0a, 0x12, 0x69, 0x70, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x18, 0xc9, 0xad, 0xd9, 0x76, 0x20, 0x01, 0x28, 0x04, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, + 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x2f, 0x69, 0x70, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, + 0x00, 0x52, 0x10, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x69, 0x6e, + 0x74, 0x36, 0x34, 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0xde, 0xba, 0xab, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x64, + 0x73, 0x74, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x7d, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0xcf, 0x9c, 0xba, 0xef, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6c, 0x34, 0x2d, 0x73, 0x72, + 0x63, 0x2d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x6c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x86, 0xb9, 0xad, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, + 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x44, 0x82, 0x41, 0x41, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x61, 0x63, + 0x2d, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0xdb, 0x01, 0x0a, 0x2b, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, + 0x6c, 0x73, 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x8a, 0xc1, 0xda, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, + 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x6e, 0x75, 0x6d, + 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, 0x2d, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x29, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x70, 0x6c, 0x73, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x6d, 0x70, 0x6c, 0x73, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x6e, + 0x75, 0x6d, 0x12, 0x75, 0x0a, 0x11, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xce, 0xc5, 0x85, 0x92, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x43, 0x82, 0x41, 0x40, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, 0x6c, 0x73, + 0x2d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x0f, 0x6d, 0x70, 0x6c, 0x73, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x72, 0x0a, 0x07, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x74, 0x63, 0x18, 0x92, 0xf7, 0xac, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x40, 0x82, 0x41, 0x3d, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x70, + 0x6c, 0x73, 0x2d, 0x74, 0x63, 0x52, 0x06, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x63, 0x12, 0x85, 0x01, + 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0xef, 0x8e, 0xe5, 0x59, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, + 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x47, + 0x82, 0x41, 0x44, 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, + 0x70, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0xb9, 0x01, 0x0a, 0x1f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, + 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0xea, 0xf2, 0xa5, 0xde, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x58, 0x82, 0x41, 0x55, 0x2f, + 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x2f, 0x6e, 0x65, 0x78, 0x74, 0x2d, 0x68, 0x6f, 0x70, 0x2d, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x2d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0x86, + 0x02, 0x0a, 0x18, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x74, 0x82, 0x41, 0x71, + 0x2f, 0x61, 0x66, 0x74, 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, 0x61, 0x66, 0x74, + 0x73, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2d, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5d, 0x0a, 0x17, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x69, 0x62, + 0x69, 0x5f, 0x61, 0x66, 0x74, 0x2e, 0x41, 0x66, 0x74, 0x73, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x15, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x67, 0x72, 0x69, 0x62, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x72, 0x69, 0x62, 0x69, 0x5f, 0x61, 0x66, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_v1_proto_gribi_aft_gribi_aft_proto_rawDescOnce sync.Once + file_v1_proto_gribi_aft_gribi_aft_proto_rawDescData = file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc +) + +func file_v1_proto_gribi_aft_gribi_aft_proto_rawDescGZIP() []byte { + file_v1_proto_gribi_aft_gribi_aft_proto_rawDescOnce.Do(func() { + file_v1_proto_gribi_aft_gribi_aft_proto_rawDescData = protoimpl.X.CompressGZIP(file_v1_proto_gribi_aft_gribi_aft_proto_rawDescData) + }) + return file_v1_proto_gribi_aft_gribi_aft_proto_rawDescData +} + +var file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_v1_proto_gribi_aft_gribi_aft_proto_goTypes = []interface{}{ + (*Device)(nil), // 0: gribi_aft.Device + (*Afts)(nil), // 1: gribi_aft.Afts + (*Afts_Ipv4Entry)(nil), // 2: gribi_aft.Afts.Ipv4Entry + (*Afts_Ipv4EntryKey)(nil), // 3: gribi_aft.Afts.Ipv4EntryKey + (*Afts_Ipv6Entry)(nil), // 4: gribi_aft.Afts.Ipv6Entry + (*Afts_Ipv6EntryKey)(nil), // 5: gribi_aft.Afts.Ipv6EntryKey + (*Afts_LabelEntry)(nil), // 6: gribi_aft.Afts.LabelEntry + (*Afts_LabelEntryKey)(nil), // 7: gribi_aft.Afts.LabelEntryKey + (*Afts_MacEntry)(nil), // 8: gribi_aft.Afts.MacEntry + (*Afts_MacEntryKey)(nil), // 9: gribi_aft.Afts.MacEntryKey + (*Afts_NextHop)(nil), // 10: gribi_aft.Afts.NextHop + (*Afts_NextHopGroup)(nil), // 11: gribi_aft.Afts.NextHopGroup + (*Afts_NextHopGroupKey)(nil), // 12: gribi_aft.Afts.NextHopGroupKey + (*Afts_NextHopKey)(nil), // 13: gribi_aft.Afts.NextHopKey + (*Afts_PolicyForwardingEntry)(nil), // 14: gribi_aft.Afts.PolicyForwardingEntry + (*Afts_PolicyForwardingEntryKey)(nil), // 15: gribi_aft.Afts.PolicyForwardingEntryKey + (*Afts_LabelEntry_PoppedMplsLabelStackUnion)(nil), // 16: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion + (*Afts_NextHop_InterfaceRef)(nil), // 17: gribi_aft.Afts.NextHop.InterfaceRef + (*Afts_NextHop_IpInIp)(nil), // 18: gribi_aft.Afts.NextHop.IpInIp + (*Afts_NextHop_PushedMplsLabelStackUnion)(nil), // 19: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion + (*Afts_NextHopGroup_NextHop)(nil), // 20: gribi_aft.Afts.NextHopGroup.NextHop + (*Afts_NextHopGroup_NextHopKey)(nil), // 21: gribi_aft.Afts.NextHopGroup.NextHopKey + (enums.OpenconfigAftTypesEncapsulationHeaderType)(0), // 22: gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + (*ywrapper.BytesValue)(nil), // 23: ywrapper.BytesValue + (*ywrapper.UintValue)(nil), // 24: ywrapper.UintValue + (*ywrapper.StringValue)(nil), // 25: ywrapper.StringValue + (enums.OpenconfigMplsTypesMplsLabelEnum)(0), // 26: gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + (*ywrapper.BoolValue)(nil), // 27: ywrapper.BoolValue + (enums.OpenconfigPacketMatchTypesIPPROTOCOL)(0), // 28: gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL +} +var file_v1_proto_gribi_aft_gribi_aft_proto_depIdxs = []int32{ + 1, // 0: gribi_aft.Device.afts:type_name -> gribi_aft.Afts + 3, // 1: gribi_aft.Afts.ipv4_entry:type_name -> gribi_aft.Afts.Ipv4EntryKey + 5, // 2: gribi_aft.Afts.ipv6_entry:type_name -> gribi_aft.Afts.Ipv6EntryKey + 7, // 3: gribi_aft.Afts.label_entry:type_name -> gribi_aft.Afts.LabelEntryKey + 9, // 4: gribi_aft.Afts.mac_entry:type_name -> gribi_aft.Afts.MacEntryKey + 13, // 5: gribi_aft.Afts.next_hop:type_name -> gribi_aft.Afts.NextHopKey + 12, // 6: gribi_aft.Afts.next_hop_group:type_name -> gribi_aft.Afts.NextHopGroupKey + 15, // 7: gribi_aft.Afts.policy_forwarding_entry:type_name -> gribi_aft.Afts.PolicyForwardingEntryKey + 22, // 8: gribi_aft.Afts.Ipv4Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 23, // 9: gribi_aft.Afts.Ipv4Entry.entry_metadata:type_name -> ywrapper.BytesValue + 24, // 10: gribi_aft.Afts.Ipv4Entry.next_hop_group:type_name -> ywrapper.UintValue + 25, // 11: gribi_aft.Afts.Ipv4Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 2, // 12: gribi_aft.Afts.Ipv4EntryKey.ipv4_entry:type_name -> gribi_aft.Afts.Ipv4Entry + 22, // 13: gribi_aft.Afts.Ipv6Entry.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 23, // 14: gribi_aft.Afts.Ipv6Entry.entry_metadata:type_name -> ywrapper.BytesValue + 24, // 15: gribi_aft.Afts.Ipv6Entry.next_hop_group:type_name -> ywrapper.UintValue + 25, // 16: gribi_aft.Afts.Ipv6Entry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 4, // 17: gribi_aft.Afts.Ipv6EntryKey.ipv6_entry:type_name -> gribi_aft.Afts.Ipv6Entry + 23, // 18: gribi_aft.Afts.LabelEntry.entry_metadata:type_name -> ywrapper.BytesValue + 24, // 19: gribi_aft.Afts.LabelEntry.next_hop_group:type_name -> ywrapper.UintValue + 25, // 20: gribi_aft.Afts.LabelEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 16, // 21: gribi_aft.Afts.LabelEntry.popped_mpls_label_stack:type_name -> gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion + 26, // 22: gribi_aft.Afts.LabelEntryKey.label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 6, // 23: gribi_aft.Afts.LabelEntryKey.label_entry:type_name -> gribi_aft.Afts.LabelEntry + 23, // 24: gribi_aft.Afts.MacEntry.entry_metadata:type_name -> ywrapper.BytesValue + 24, // 25: gribi_aft.Afts.MacEntry.next_hop_group:type_name -> ywrapper.UintValue + 25, // 26: gribi_aft.Afts.MacEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 8, // 27: gribi_aft.Afts.MacEntryKey.mac_entry:type_name -> gribi_aft.Afts.MacEntry + 22, // 28: gribi_aft.Afts.NextHop.decapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 22, // 29: gribi_aft.Afts.NextHop.encapsulate_header:type_name -> gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType + 17, // 30: gribi_aft.Afts.NextHop.interface_ref:type_name -> gribi_aft.Afts.NextHop.InterfaceRef + 25, // 31: gribi_aft.Afts.NextHop.ip_address:type_name -> ywrapper.StringValue + 18, // 32: gribi_aft.Afts.NextHop.ip_in_ip:type_name -> gribi_aft.Afts.NextHop.IpInIp + 25, // 33: gribi_aft.Afts.NextHop.mac_address:type_name -> ywrapper.StringValue + 25, // 34: gribi_aft.Afts.NextHop.network_instance:type_name -> ywrapper.StringValue + 27, // 35: gribi_aft.Afts.NextHop.pop_top_label:type_name -> ywrapper.BoolValue + 19, // 36: gribi_aft.Afts.NextHop.pushed_mpls_label_stack:type_name -> gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion + 25, // 37: gribi_aft.Afts.NextHop.tunnel_src_ip_address:type_name -> ywrapper.StringValue + 24, // 38: gribi_aft.Afts.NextHop.vni_label:type_name -> ywrapper.UintValue + 24, // 39: gribi_aft.Afts.NextHopGroup.backup_next_hop_group:type_name -> ywrapper.UintValue + 24, // 40: gribi_aft.Afts.NextHopGroup.color:type_name -> ywrapper.UintValue + 21, // 41: gribi_aft.Afts.NextHopGroup.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHopKey + 11, // 42: gribi_aft.Afts.NextHopGroupKey.next_hop_group:type_name -> gribi_aft.Afts.NextHopGroup + 10, // 43: gribi_aft.Afts.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHop + 23, // 44: gribi_aft.Afts.PolicyForwardingEntry.entry_metadata:type_name -> ywrapper.BytesValue + 24, // 45: gribi_aft.Afts.PolicyForwardingEntry.ip_dscp:type_name -> ywrapper.UintValue + 25, // 46: gribi_aft.Afts.PolicyForwardingEntry.ip_prefix:type_name -> ywrapper.StringValue + 28, // 47: gribi_aft.Afts.PolicyForwardingEntry.ip_protocol_openconfigpacketmatchtypesipprotocol:type_name -> gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL + 24, // 48: gribi_aft.Afts.PolicyForwardingEntry.l4_dst_port:type_name -> ywrapper.UintValue + 24, // 49: gribi_aft.Afts.PolicyForwardingEntry.l4_src_port:type_name -> ywrapper.UintValue + 25, // 50: gribi_aft.Afts.PolicyForwardingEntry.mac_address:type_name -> ywrapper.StringValue + 26, // 51: gribi_aft.Afts.PolicyForwardingEntry.mpls_label_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 24, // 52: gribi_aft.Afts.PolicyForwardingEntry.mpls_tc:type_name -> ywrapper.UintValue + 24, // 53: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group:type_name -> ywrapper.UintValue + 25, // 54: gribi_aft.Afts.PolicyForwardingEntry.next_hop_group_network_instance:type_name -> ywrapper.StringValue + 14, // 55: gribi_aft.Afts.PolicyForwardingEntryKey.policy_forwarding_entry:type_name -> gribi_aft.Afts.PolicyForwardingEntry + 26, // 56: gribi_aft.Afts.LabelEntry.PoppedMplsLabelStackUnion.popped_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 25, // 57: gribi_aft.Afts.NextHop.InterfaceRef.interface:type_name -> ywrapper.StringValue + 24, // 58: gribi_aft.Afts.NextHop.InterfaceRef.subinterface:type_name -> ywrapper.UintValue + 25, // 59: gribi_aft.Afts.NextHop.IpInIp.dst_ip:type_name -> ywrapper.StringValue + 25, // 60: gribi_aft.Afts.NextHop.IpInIp.src_ip:type_name -> ywrapper.StringValue + 26, // 61: gribi_aft.Afts.NextHop.PushedMplsLabelStackUnion.pushed_mpls_label_stack_openconfigmplstypesmplslabelenum:type_name -> gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum + 24, // 62: gribi_aft.Afts.NextHopGroup.NextHop.weight:type_name -> ywrapper.UintValue + 20, // 63: gribi_aft.Afts.NextHopGroup.NextHopKey.next_hop:type_name -> gribi_aft.Afts.NextHopGroup.NextHop + 64, // [64:64] is the sub-list for method output_type + 64, // [64:64] is the sub-list for method input_type + 64, // [64:64] is the sub-list for extension type_name + 64, // [64:64] is the sub-list for extension extendee + 0, // [0:64] is the sub-list for field type_name +} + +func init() { file_v1_proto_gribi_aft_gribi_aft_proto_init() } +func file_v1_proto_gribi_aft_gribi_aft_proto_init() { + if File_v1_proto_gribi_aft_gribi_aft_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Device); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_Ipv4Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_Ipv4EntryKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_Ipv6Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_Ipv6EntryKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_LabelEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_LabelEntryKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_MacEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_MacEntryKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHopGroup); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHopGroupKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHopKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_PolicyForwardingEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_PolicyForwardingEntryKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_LabelEntry_PoppedMplsLabelStackUnion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHop_InterfaceRef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHop_IpInIp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHop_PushedMplsLabelStackUnion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHopGroup_NextHop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Afts_NextHopGroup_NextHopKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[7].OneofWrappers = []interface{}{ + (*Afts_LabelEntryKey_LabelOpenconfigmplstypesmplslabelenum)(nil), + (*Afts_LabelEntryKey_LabelUint64)(nil), + } + file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*Afts_PolicyForwardingEntry_IpProtocolOpenconfigpacketmatchtypesipprotocol)(nil), + (*Afts_PolicyForwardingEntry_IpProtocolUint64)(nil), + (*Afts_PolicyForwardingEntry_MplsLabelOpenconfigmplstypesmplslabelenum)(nil), + (*Afts_PolicyForwardingEntry_MplsLabelUint64)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc, + NumEnums: 0, + NumMessages: 22, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_v1_proto_gribi_aft_gribi_aft_proto_goTypes, + DependencyIndexes: file_v1_proto_gribi_aft_gribi_aft_proto_depIdxs, + MessageInfos: file_v1_proto_gribi_aft_gribi_aft_proto_msgTypes, + }.Build() + File_v1_proto_gribi_aft_gribi_aft_proto = out.File + file_v1_proto_gribi_aft_gribi_aft_proto_rawDesc = nil + file_v1_proto_gribi_aft_gribi_aft_proto_goTypes = nil + file_v1_proto_gribi_aft_gribi_aft_proto_depIdxs = nil +} diff --git a/protomap/integration_tests/testdata/gribi_aft/gribi_aft.proto b/protomap/integration_tests/testdata/gribi_aft/gribi_aft.proto new file mode 100644 index 000000000..8e48670a7 --- /dev/null +++ b/protomap/integration_tests/testdata/gribi_aft/gribi_aft.proto @@ -0,0 +1,145 @@ +// gribi_aft is generated by proto_generator as a protobuf +// representation of a YANG schema. +// +// Input schema modules: +// - github.com/openconfig/gribi/v1/yang/gribi-aft.yang +// Include paths: +// - github.com/openconfig/gribi/v1/yang/... +// - github.com/openconfig/gribi/v1/yang/deps/... +syntax = "proto3"; + +package gribi_aft; + +import "github.com/openconfig/ygot/proto/ywrapper/ywrapper.proto"; +import "github.com/openconfig/ygot/proto/yext/yext.proto"; +import "v1/proto/gribi_aft/enums/enums.proto"; + +option go_package = "github.com/openconfig/gribi/v1/proto/gribi_aft"; + +message Device { + Afts afts = 35982132 [(yext.schemapath) = "/afts"]; +} + +message Afts { + message Ipv4Entry { + gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType decapsulate_header = 383809427 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry/state/decapsulate-header"]; + ywrapper.BytesValue entry_metadata = 290934374 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry/state/entry-metadata"]; + ywrapper.UintValue next_hop_group = 497198611 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry/state/next-hop-group"]; + ywrapper.StringValue next_hop_group_network_instance = 32856574 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry/state/next-hop-group-network-instance"]; + } + message Ipv4EntryKey { + string prefix = 1 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry/state/prefix|/afts/ipv4-unicast/ipv4-entry/prefix"]; + Ipv4Entry ipv4_entry = 2; + } + message Ipv6Entry { + gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType decapsulate_header = 328774623 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry/state/decapsulate-header"]; + ywrapper.BytesValue entry_metadata = 11794282 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry/state/entry-metadata"]; + ywrapper.UintValue next_hop_group = 442121607 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry/state/next-hop-group"]; + ywrapper.StringValue next_hop_group_network_instance = 492017618 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry/state/next-hop-group-network-instance"]; + } + message Ipv6EntryKey { + string prefix = 1 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry/state/prefix|/afts/ipv6-unicast/ipv6-entry/prefix"]; + Ipv6Entry ipv6_entry = 2; + } + message LabelEntry { + message PoppedMplsLabelStackUnion { + gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum popped_mpls_label_stack_openconfigmplstypesmplslabelenum = 524692292 [(yext.schemapath) = "/afts/mpls/label-entry/state/popped-mpls-label-stack"]; + uint64 popped_mpls_label_stack_uint64 = 510588408 [(yext.schemapath) = "/afts/mpls/label-entry/state/popped-mpls-label-stack"]; + } + ywrapper.BytesValue entry_metadata = 100486674 [(yext.schemapath) = "/afts/mpls/label-entry/state/entry-metadata"]; + ywrapper.UintValue next_hop_group = 307713279 [(yext.schemapath) = "/afts/mpls/label-entry/state/next-hop-group"]; + ywrapper.StringValue next_hop_group_network_instance = 303628026 [(yext.schemapath) = "/afts/mpls/label-entry/state/next-hop-group-network-instance"]; + repeated PoppedMplsLabelStackUnion popped_mpls_label_stack = 62799927 [(yext.leaflistunion) = true,(yext.schemapath) = "/afts/mpls/label-entry/state/popped-mpls-label-stack"]; + } + message LabelEntryKey { + oneof label { + gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum label_openconfigmplstypesmplslabelenum = 505941675 [(yext.schemapath) = "/afts/mpls/label-entry/state/label|/afts/mpls/label-entry/label"]; + uint64 label_uint64 = 50948579 [(yext.schemapath) = "/afts/mpls/label-entry/state/label|/afts/mpls/label-entry/label"]; + } + LabelEntry label_entry = 2; + } + message MacEntry { + ywrapper.BytesValue entry_metadata = 397462192 [(yext.schemapath) = "/afts/ethernet/mac-entry/state/entry-metadata"]; + ywrapper.UintValue next_hop_group = 320343041 [(yext.schemapath) = "/afts/ethernet/mac-entry/state/next-hop-group"]; + ywrapper.StringValue next_hop_group_network_instance = 264313412 [(yext.schemapath) = "/afts/ethernet/mac-entry/state/next-hop-group-network-instance"]; + } + message MacEntryKey { + string mac_address = 1 [(yext.schemapath) = "/afts/ethernet/mac-entry/state/mac-address|/afts/ethernet/mac-entry/mac-address"]; + MacEntry mac_entry = 2; + } + message NextHop { + message InterfaceRef { + ywrapper.StringValue interface = 366751031 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref/state/interface"]; + ywrapper.UintValue subinterface = 488145333 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref/state/subinterface"]; + } + message IpInIp { + ywrapper.StringValue dst_ip = 184775743 [(yext.schemapath) = "/afts/next-hops/next-hop/ip-in-ip/state/dst-ip"]; + ywrapper.StringValue src_ip = 220560118 [(yext.schemapath) = "/afts/next-hops/next-hop/ip-in-ip/state/src-ip"]; + } + message PushedMplsLabelStackUnion { + gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum pushed_mpls_label_stack_openconfigmplstypesmplslabelenum = 307755077 [(yext.schemapath) = "/afts/next-hops/next-hop/state/pushed-mpls-label-stack"]; + uint64 pushed_mpls_label_stack_uint64 = 47493573 [(yext.schemapath) = "/afts/next-hops/next-hop/state/pushed-mpls-label-stack"]; + } + gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType decapsulate_header = 104970793 [(yext.schemapath) = "/afts/next-hops/next-hop/state/decapsulate-header"]; + gribi_aft.enums.OpenconfigAftTypesEncapsulationHeaderType encapsulate_header = 69966061 [(yext.schemapath) = "/afts/next-hops/next-hop/state/encapsulate-header"]; + InterfaceRef interface_ref = 293682821 [(yext.schemapath) = "/afts/next-hops/next-hop/interface-ref"]; + ywrapper.StringValue ip_address = 242108262 [(yext.schemapath) = "/afts/next-hops/next-hop/state/ip-address"]; + IpInIp ip_in_ip = 157296597 [(yext.schemapath) = "/afts/next-hops/next-hop/ip-in-ip"]; + ywrapper.StringValue mac_address = 404609192 [(yext.schemapath) = "/afts/next-hops/next-hop/state/mac-address"]; + ywrapper.StringValue network_instance = 232391308 [(yext.schemapath) = "/afts/next-hops/next-hop/state/network-instance"]; + ywrapper.BoolValue pop_top_label = 382175404 [(yext.schemapath) = "/afts/next-hops/next-hop/state/pop-top-label"]; + repeated PushedMplsLabelStackUnion pushed_mpls_label_stack = 489592660 [(yext.leaflistunion) = true,(yext.schemapath) = "/afts/next-hops/next-hop/state/pushed-mpls-label-stack"]; + ywrapper.StringValue tunnel_src_ip_address = 174262178 [(yext.schemapath) = "/afts/next-hops/next-hop/state/tunnel-src-ip-address"]; + ywrapper.UintValue vni_label = 209933130 [(yext.schemapath) = "/afts/next-hops/next-hop/state/vni-label"]; + } + message NextHopGroup { + message NextHop { + ywrapper.UintValue weight = 202140175 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/next-hops/next-hop/state/weight"]; + } + message NextHopKey { + uint64 index = 1 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/next-hops/next-hop/state/index|/afts/next-hop-groups/next-hop-group/next-hops/next-hop/index"]; + NextHop next_hop = 2; + } + ywrapper.UintValue backup_next_hop_group = 366506898 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/state/backup-next-hop-group"]; + ywrapper.UintValue color = 242427279 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/state/color"]; + repeated NextHopKey next_hop = 211071474 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/next-hops/next-hop"]; + } + message NextHopGroupKey { + uint64 id = 1 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group/state/id|/afts/next-hop-groups/next-hop-group/id"]; + NextHopGroup next_hop_group = 2; + } + message NextHopKey { + uint64 index = 1 [(yext.schemapath) = "/afts/next-hops/next-hop/state/index|/afts/next-hops/next-hop/index"]; + NextHop next_hop = 2; + } + message PolicyForwardingEntry { + ywrapper.BytesValue entry_metadata = 141950242 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/entry-metadata"]; + ywrapper.UintValue ip_dscp = 350830798 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/ip-dscp"]; + ywrapper.StringValue ip_prefix = 66278688 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/ip-prefix"]; + oneof ip_protocol { + gribi_aft.enums.OpenconfigPacketMatchTypesIPPROTOCOL ip_protocol_openconfigpacketmatchtypesipprotocol = 157826780 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/ip-protocol"]; + uint64 ip_protocol_uint64 = 248927945 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/ip-protocol"]; + } + ywrapper.UintValue l4_dst_port = 447405406 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/l4-dst-port"]; + ywrapper.UintValue l4_src_port = 502173263 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/l4-src-port"]; + ywrapper.StringValue mac_address = 422272134 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/mac-address"]; + oneof mpls_label { + gribi_aft.enums.OpenconfigMplsTypesMplsLabelEnum mpls_label_openconfigmplstypesmplslabelenum = 47620234 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/mpls-label"]; + uint64 mpls_label_uint64 = 306275022 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/mpls-label"]; + } + ywrapper.UintValue mpls_tc = 281754514 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/mpls-tc"]; + ywrapper.UintValue next_hop_group = 188303215 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/next-hop-group"]; + ywrapper.StringValue next_hop_group_network_instance = 466188650 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/next-hop-group-network-instance"]; + } + message PolicyForwardingEntryKey { + uint64 index = 1 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry/state/index|/afts/policy-forwarding/policy-forwarding-entry/index"]; + PolicyForwardingEntry policy_forwarding_entry = 2; + } + repeated Ipv4EntryKey ipv4_entry = 410397655 [(yext.schemapath) = "/afts/ipv4-unicast/ipv4-entry"]; + repeated Ipv6EntryKey ipv6_entry = 403891971 [(yext.schemapath) = "/afts/ipv6-unicast/ipv6-entry"]; + repeated LabelEntryKey label_entry = 153428187 [(yext.schemapath) = "/afts/mpls/label-entry"]; + repeated MacEntryKey mac_entry = 162139969 [(yext.schemapath) = "/afts/ethernet/mac-entry"]; + repeated NextHopKey next_hop = 132654769 [(yext.schemapath) = "/afts/next-hops/next-hop"]; + repeated NextHopGroupKey next_hop_group = 362999033 [(yext.schemapath) = "/afts/next-hop-groups/next-hop-group"]; + repeated PolicyForwardingEntryKey policy_forwarding_entry = 269536139 [(yext.schemapath) = "/afts/policy-forwarding/policy-forwarding-entry"]; +} diff --git a/protomap/proto.go b/protomap/proto.go index 0dcd6188c..3f3b9bb31 100644 --- a/protomap/proto.go +++ b/protomap/proto.go @@ -175,73 +175,175 @@ func parseList(fd protoreflect.FieldDescriptor, v protoreflect.Value, vals map[* } listPath := mapPath[0] - // TODO(robjs): This handles the case where we have a list - but not a leaf-list. - // Add implementation to handle leaf lists. - l := v.List() - if fd.Kind() != protoreflect.MessageKind { - return fmt.Errorf("invalid list, value is not a proto message, %s - is %T", fd.FullName(), l.NewElement()) + leaflist, leaflistunion, err := annotatedYANGFieldInfo(fd) + if err != nil { + return fmt.Errorf("cannot parse list field %s, %v", fd.FullName(), err) } - var listVal proto.Message - for i := 0; i < l.Len(); i++ { - listMsg := l.Get(i).Message().Interface().(proto.Message) - var listParseErr error - listKeys := map[string]string{} - mappedValues := map[*gpb.Path]interface{}{} + l := v.List() - unpopRange{listMsg.ProtoReflect()}.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { - pl, err := parseListField(fd, v, listPath) - if err != nil { - listParseErr = err - return false - } + switch { + case leaflist: + llv, err := leaflistVals(l) + if err != nil { + return fmt.Errorf("error mapping leaf-list, path %s, %v", resolvedPath(basePath, listPath), err) + } + vals[resolvedPath(basePath, listPath)] = llv + return nil + case leaflistunion: + llv, err := leaflistUnionVals(l) + if err != nil { + return fmt.Errorf("error mapping leaf-list of union, path %s, %v", resolvedPath(basePath, listPath), err) + } + vals[resolvedPath(basePath, listPath)] = llv + return nil + default: + if fd.Kind() != protoreflect.MessageKind { + return fmt.Errorf("invalid list, value is not a proto message, %s - is %T", fd.FullName(), l.NewElement()) + } + var listVal proto.Message + for i := 0; i < l.Len(); i++ { + listMsg := l.Get(i).Message().Interface() + + var listParseErr error + listKeys := map[string]string{} + mappedValues := map[*gpb.Path]interface{}{} + + unpopRange{listMsg.ProtoReflect()}.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + pl, err := parseListField(fd, v, listPath) + if err != nil { + listParseErr = err + return false + } - // If this field was not the value of the list then we receive a populated - // single key back from the parseListField call. We don't check for nil - // since if it is not populated then we'll simply never do this mapping. - for k, v := range pl.keys { - listKeys[k] = v - } + // If this field was not the value of the list then we receive a populated + // single key back from the parseListField call. We don't check for nil + // since if it is not populated then we'll simply never do this mapping. + for k, v := range pl.keys { + listKeys[k] = v + } - // When there are keys in the list, we'll also have fields that they map to - // in the output set of paths, so add these to the values that we're receiving. - for k, v := range pl.mappedValues { - mappedValues[k] = v - } + // When there are keys in the list, we'll also have fields that they map to + // in the output set of paths, so add these to the values that we're receiving. + for k, v := range pl.mappedValues { + mappedValues[k] = v + } - // If this was the list value, then we return the value of the list, - // which is always a protobuf message back. - if pl.member != nil { - listVal = pl.member + // If this was the list value, then we return the value of the list, + // which is always a protobuf message back. + if pl.member != nil { + listVal = pl.member + } + return true + }) + + if listParseErr != nil { + return fmt.Errorf("could not parse a field within the list %s , %v", fd.FullName(), listParseErr) } - return true - }) - if listParseErr != nil { - return fmt.Errorf("could not parse a field within the list %s , %v", fd.FullName(), listParseErr) - } + // This is the first time that we have found a path that requires a + // data tree path, not a schema tree path. + p := resolvedPath(basePath, listPath) + + for kn, kv := range listKeys { + le := p.Elem[len(p.Elem)-1] + if le.Key == nil { + le.Key = map[string]string{} + } + le.Key[kn] = kv + } - // This is the first time that we have found a path that requires a - // data tree path, not a schema tree path. - p := resolvedPath(basePath, listPath) + for path, value := range mappedValues { + vals[resolvedPath(p, path)] = value + } - for kn, kv := range listKeys { - le := p.Elem[len(p.Elem)-1] - if le.Key == nil { - le.Key = map[string]string{} + if err := pathsFromProtoInternal(listVal, vals, p); err != nil { + return err } - le.Key[kn] = kv } + } + return nil +} - for path, value := range mappedValues { - vals[resolvedPath(p, path)] = value +// leaflistVals extracts the values from the protobuf list, l, that is a leaf-list +// of a YANG scalar type. It returns a slice of the values included, and an +// optional error. +func leaflistVals(l protoreflect.List) ([]interface{}, error) { + var lvals []interface{} + for i := 0; i < l.Len(); i++ { + switch t := l.Get(i).Message().Interface().(type) { + case *wpb.BoolValue: + lvals = append(lvals, t.GetValue()) + case *wpb.BytesValue: + lvals = append(lvals, t.GetValue()) + case *wpb.Decimal64Value: + return nil, fmt.Errorf("unhandled type, decimal64") + case *wpb.IntValue: + lvals = append(lvals, t.GetValue()) + case *wpb.StringValue: + lvals = append(lvals, t.GetValue()) + case *wpb.UintValue: + lvals = append(lvals, t.GetValue()) + default: + return nil, fmt.Errorf("unknown type in protobuf, %T", t) } + } + return lvals, nil +} - if err := pathsFromProtoInternal(listVal, vals, p); err != nil { - return err +// leaflistUnionVals extracts the values from the protobuf list, l, that is a +// leaf-list of a YANG union type. It returns a slice of the values included and +// an error. Specific handling is needed for a leaf-list of unions due to the +// fact that it is not possible to have a repeated oneof field, hence unions +// are represented as a field within a message that represents the union itself. +func leaflistUnionVals(l protoreflect.List) ([]interface{}, error) { + var lvals []interface{} + for i := 0; i < l.Len(); i++ { + var ( + llv interface{} + fErr error + ) + + listMsg := l.Get(i).Message().Interface() + listMsg.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + if llv != nil { + fErr = fmt.Errorf("multiple populated fields within union message, got: %v with existing entry: %v", v, llv) + return false + } + switch fd.Kind() { + case protoreflect.BoolKind: + llv = v.Bool() + case protoreflect.BytesKind: + llv = v.Bytes() + case protoreflect.StringKind: + llv = v.String() + case protoreflect.EnumKind: + n, ok, err := enumYANGName(fd.Enum().Values().ByNumber(v.Enum())) + if err != nil { + fErr = fmt.Errorf("cannot map enumeration for field, err: %v", err) + return false + } + if !ok { + fErr = fmt.Errorf("enumeration value has invalid name for path, value: %v", v.Interface()) + return false + } + llv = n + case protoreflect.Int64Kind: + llv = v.Int() + case protoreflect.Uint64Kind: + llv = v.Uint() + default: + fErr = fmt.Errorf("unsupported kind %s", fd.Kind()) + } + return true + }) + if fErr != nil { + return nil, fErr } + + lvals = append(lvals, llv) } - return nil + return lvals, nil } // parsedListField returns the details of an individual field of a message @@ -341,6 +443,13 @@ func annotatedSchemaPath(fd protoreflect.FieldDescriptor) ([]*gpb.Path, error) { return paths, nil } +func annotatedYANGFieldInfo(fd protoreflect.FieldDescriptor) (bool, bool, error) { + po := fd.Options().(*descriptorpb.FieldOptions) + leaflist := proto.GetExtension(po, yextpb.E_Leaflist).(bool) + leaflistunion := proto.GetExtension(po, yextpb.E_Leaflistunion).(bool) + return leaflist, leaflistunion, nil +} + // fieldName returns the name last element of the path supplied - corresponding // to the field that is being described by the specified path. func fieldName(path *gpb.Path) (string, error) { diff --git a/protomap/proto_test.go b/protomap/proto_test.go index 0853a3b36..ec765cf0d 100644 --- a/protomap/proto_test.go +++ b/protomap/proto_test.go @@ -294,6 +294,113 @@ func TestPathsFromProtoInternal(t *testing.T) { }}, }, wantErrSubstring: "error parsing path /one[two]", + }, { + desc: "leaf-list of string", + inMsg: &epb.ExampleMessage{ + LeaflistString: []*wpb.StringValue{{ + Value: "one", + }, { + Value: "two", + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-string"): []interface{}{"one", "two"}, + }, + }, { + desc: "leaf-list of bool", + inMsg: &epb.ExampleMessage{ + LeaflistBool: []*wpb.BoolValue{{ + Value: true, + }, { + Value: false, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-bool"): []interface{}{true, false}, + }, + }, { + desc: "leaf-list of integer", + inMsg: &epb.ExampleMessage{ + LeaflistInt: []*wpb.IntValue{{ + Value: 42, + }, { + Value: 84, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-int"): []interface{}{int64(42), int64(84)}, + }, + }, { + desc: "leaf-list of unsigned integer", + inMsg: &epb.ExampleMessage{ + LeaflistUint: []*wpb.UintValue{{ + Value: 42, + }, { + Value: 84, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-uint"): []interface{}{uint64(42), uint64(84)}, + }, + }, { + desc: "leaf-list of bytes", + inMsg: &epb.ExampleMessage{ + LeaflistBytes: []*wpb.BytesValue{{ + Value: []byte{42}, + }, { + Value: []byte{84}, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-bytes"): []interface{}{[]byte{42}, []byte{84}}, + }, + }, { + desc: "leaf-list of decimal64", + inMsg: &epb.ExampleMessage{ + LeaflistDecimal64: []*wpb.Decimal64Value{{ + Digits: 4242, + Precision: 2, + }, { + Digits: 8484, + Precision: 2, + }}, + }, + wantErrSubstring: "unhandled type, decimal64", + }, { + desc: "leaf-list of union", + inMsg: &epb.ExampleMessage{ + LeaflistUnion: []*epb.ExampleUnion{{ + Str: "hello", + }, { + Uint: 42, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-union"): []interface{}{"hello", uint64(42)}, + }, + }, { + desc: "leaf-list of union where two fields are populated", + inMsg: &epb.ExampleMessage{ + LeaflistUnion: []*epb.ExampleUnion{{ + Str: "hello", + Uint: 84, + }, { + Uint: 42, + }}, + }, + wantErrSubstring: "multiple populated fields within union message", + }, { + desc: "leaf-list of union with enumeration", + inMsg: &epb.ExampleMessage{ + LeaflistUnion: []*epb.ExampleUnion{{ + Str: "hello", + }, { + Enum: epb.ExampleEnum_ENUM_VALFORTYTWO, + }}, + }, + wantPaths: map[*gpb.Path]interface{}{ + mustPath("/leaflist-union"): []interface{}{"hello", "VAL_FORTYTWO"}, + }, }} for _, tt := range tests { diff --git a/protomap/testdata/exschemapath/exschemapath.pb.go b/protomap/testdata/exschemapath/exschemapath.pb.go index 86c110b45..9feab5efd 100644 --- a/protomap/testdata/exschemapath/exschemapath.pb.go +++ b/protomap/testdata/exschemapath/exschemapath.pb.go @@ -242,7 +242,14 @@ type ExampleMessage struct { // Types that are assignable to OneofField: // *ExampleMessage_OneofOne // *ExampleMessage_OneofTwo - OneofField isExampleMessage_OneofField `protobuf_oneof:"oneof_field"` + OneofField isExampleMessage_OneofField `protobuf_oneof:"oneof_field"` + LeaflistString []*ywrapper.StringValue `protobuf:"bytes,14,rep,name=leaflist_string,json=leaflistString,proto3" json:"leaflist_string,omitempty"` + LeaflistBool []*ywrapper.BoolValue `protobuf:"bytes,16,rep,name=leaflist_bool,json=leaflistBool,proto3" json:"leaflist_bool,omitempty"` + LeaflistInt []*ywrapper.IntValue `protobuf:"bytes,17,rep,name=leaflist_int,json=leaflistInt,proto3" json:"leaflist_int,omitempty"` + LeaflistUint []*ywrapper.UintValue `protobuf:"bytes,18,rep,name=leaflist_uint,json=leaflistUint,proto3" json:"leaflist_uint,omitempty"` + LeaflistBytes []*ywrapper.BytesValue `protobuf:"bytes,19,rep,name=leaflist_bytes,json=leaflistBytes,proto3" json:"leaflist_bytes,omitempty"` + LeaflistDecimal64 []*ywrapper.Decimal64Value `protobuf:"bytes,20,rep,name=leaflist_decimal64,json=leaflistDecimal64,proto3" json:"leaflist_decimal64,omitempty"` + LeaflistUnion []*ExampleUnion `protobuf:"bytes,15,rep,name=leaflist_union,json=leaflistUnion,proto3" json:"leaflist_union,omitempty"` } func (x *ExampleMessage) Reset() { @@ -375,6 +382,55 @@ func (x *ExampleMessage) GetOneofTwo() uint64 { return 0 } +func (x *ExampleMessage) GetLeaflistString() []*ywrapper.StringValue { + if x != nil { + return x.LeaflistString + } + return nil +} + +func (x *ExampleMessage) GetLeaflistBool() []*ywrapper.BoolValue { + if x != nil { + return x.LeaflistBool + } + return nil +} + +func (x *ExampleMessage) GetLeaflistInt() []*ywrapper.IntValue { + if x != nil { + return x.LeaflistInt + } + return nil +} + +func (x *ExampleMessage) GetLeaflistUint() []*ywrapper.UintValue { + if x != nil { + return x.LeaflistUint + } + return nil +} + +func (x *ExampleMessage) GetLeaflistBytes() []*ywrapper.BytesValue { + if x != nil { + return x.LeaflistBytes + } + return nil +} + +func (x *ExampleMessage) GetLeaflistDecimal64() []*ywrapper.Decimal64Value { + if x != nil { + return x.LeaflistDecimal64 + } + return nil +} + +func (x *ExampleMessage) GetLeaflistUnion() []*ExampleUnion { + if x != nil { + return x.LeaflistUnion + } + return nil +} + type isExampleMessage_OneofField interface { isExampleMessage_OneofField() } @@ -391,6 +447,69 @@ func (*ExampleMessage_OneofOne) isExampleMessage_OneofField() {} func (*ExampleMessage_OneofTwo) isExampleMessage_OneofField() {} +type ExampleUnion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` + Uint uint64 `protobuf:"varint,2,opt,name=uint,proto3" json:"uint,omitempty"` + Enum ExampleEnum `protobuf:"varint,3,opt,name=enum,proto3,enum=exschemapath.ExampleEnum" json:"enum,omitempty"` +} + +func (x *ExampleUnion) Reset() { + *x = ExampleUnion{} + if protoimpl.UnsafeEnabled { + mi := &file_exschemapath_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExampleUnion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExampleUnion) ProtoMessage() {} + +func (x *ExampleUnion) ProtoReflect() protoreflect.Message { + mi := &file_exschemapath_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExampleUnion.ProtoReflect.Descriptor instead. +func (*ExampleUnion) Descriptor() ([]byte, []int) { + return file_exschemapath_proto_rawDescGZIP(), []int{4} +} + +func (x *ExampleUnion) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +func (x *ExampleUnion) GetUint() uint64 { + if x != nil { + return x.Uint + } + return 0 +} + +func (x *ExampleUnion) GetEnum() ExampleEnum { + if x != nil { + return x.Enum + } + return ExampleEnum_ENUM_UNSET +} + type ExampleMessageChild struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -402,7 +521,7 @@ type ExampleMessageChild struct { func (x *ExampleMessageChild) Reset() { *x = ExampleMessageChild{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[4] + mi := &file_exschemapath_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -415,7 +534,7 @@ func (x *ExampleMessageChild) String() string { func (*ExampleMessageChild) ProtoMessage() {} func (x *ExampleMessageChild) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[4] + mi := &file_exschemapath_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -428,7 +547,7 @@ func (x *ExampleMessageChild) ProtoReflect() protoreflect.Message { // Deprecated: Use ExampleMessageChild.ProtoReflect.Descriptor instead. func (*ExampleMessageChild) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{4} + return file_exschemapath_proto_rawDescGZIP(), []int{5} } func (x *ExampleMessageChild) GetStr() *ywrapper.StringValue { @@ -450,7 +569,7 @@ type ExampleMessageKey struct { func (x *ExampleMessageKey) Reset() { *x = ExampleMessageKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[5] + mi := &file_exschemapath_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -463,7 +582,7 @@ func (x *ExampleMessageKey) String() string { func (*ExampleMessageKey) ProtoMessage() {} func (x *ExampleMessageKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[5] + mi := &file_exschemapath_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -476,7 +595,7 @@ func (x *ExampleMessageKey) ProtoReflect() protoreflect.Message { // Deprecated: Use ExampleMessageKey.ProtoReflect.Descriptor instead. func (*ExampleMessageKey) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{5} + return file_exschemapath_proto_rawDescGZIP(), []int{6} } func (x *ExampleMessageKey) GetSingleKey() string { @@ -505,7 +624,7 @@ type ExampleMessageListMember struct { func (x *ExampleMessageListMember) Reset() { *x = ExampleMessageListMember{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[6] + mi := &file_exschemapath_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -518,7 +637,7 @@ func (x *ExampleMessageListMember) String() string { func (*ExampleMessageListMember) ProtoMessage() {} func (x *ExampleMessageListMember) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[6] + mi := &file_exschemapath_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -531,7 +650,7 @@ func (x *ExampleMessageListMember) ProtoReflect() protoreflect.Message { // Deprecated: Use ExampleMessageListMember.ProtoReflect.Descriptor instead. func (*ExampleMessageListMember) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{6} + return file_exschemapath_proto_rawDescGZIP(), []int{7} } func (x *ExampleMessageListMember) GetStr() *ywrapper.StringValue { @@ -560,7 +679,7 @@ type NestedListKey struct { func (x *NestedListKey) Reset() { *x = NestedListKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[7] + mi := &file_exschemapath_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -573,7 +692,7 @@ func (x *NestedListKey) String() string { func (*NestedListKey) ProtoMessage() {} func (x *NestedListKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[7] + mi := &file_exschemapath_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -586,7 +705,7 @@ func (x *NestedListKey) ProtoReflect() protoreflect.Message { // Deprecated: Use NestedListKey.ProtoReflect.Descriptor instead. func (*NestedListKey) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{7} + return file_exschemapath_proto_rawDescGZIP(), []int{8} } func (x *NestedListKey) GetKeyOne() string { @@ -614,7 +733,7 @@ type NestedListMember struct { func (x *NestedListMember) Reset() { *x = NestedListMember{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[8] + mi := &file_exschemapath_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -627,7 +746,7 @@ func (x *NestedListMember) String() string { func (*NestedListMember) ProtoMessage() {} func (x *NestedListMember) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[8] + mi := &file_exschemapath_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -640,7 +759,7 @@ func (x *NestedListMember) ProtoReflect() protoreflect.Message { // Deprecated: Use NestedListMember.ProtoReflect.Descriptor instead. func (*NestedListMember) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{8} + return file_exschemapath_proto_rawDescGZIP(), []int{9} } func (x *NestedListMember) GetStr() *ywrapper.StringValue { @@ -663,7 +782,7 @@ type ExampleMessageMultiKey struct { func (x *ExampleMessageMultiKey) Reset() { *x = ExampleMessageMultiKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[9] + mi := &file_exschemapath_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -676,7 +795,7 @@ func (x *ExampleMessageMultiKey) String() string { func (*ExampleMessageMultiKey) ProtoMessage() {} func (x *ExampleMessageMultiKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[9] + mi := &file_exschemapath_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -689,7 +808,7 @@ func (x *ExampleMessageMultiKey) ProtoReflect() protoreflect.Message { // Deprecated: Use ExampleMessageMultiKey.ProtoReflect.Descriptor instead. func (*ExampleMessageMultiKey) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{9} + return file_exschemapath_proto_rawDescGZIP(), []int{10} } func (x *ExampleMessageMultiKey) GetIndex() uint32 { @@ -724,7 +843,7 @@ type MultiKeyListMember struct { func (x *MultiKeyListMember) Reset() { *x = MultiKeyListMember{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[10] + mi := &file_exschemapath_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -737,7 +856,7 @@ func (x *MultiKeyListMember) String() string { func (*MultiKeyListMember) ProtoMessage() {} func (x *MultiKeyListMember) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[10] + mi := &file_exschemapath_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -750,7 +869,7 @@ func (x *MultiKeyListMember) ProtoReflect() protoreflect.Message { // Deprecated: Use MultiKeyListMember.ProtoReflect.Descriptor instead. func (*MultiKeyListMember) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{10} + return file_exschemapath_proto_rawDescGZIP(), []int{11} } func (x *MultiKeyListMember) GetChild() *ywrapper.StringValue { @@ -781,7 +900,7 @@ type InvalidMessage struct { func (x *InvalidMessage) Reset() { *x = InvalidMessage{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[11] + mi := &file_exschemapath_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -794,7 +913,7 @@ func (x *InvalidMessage) String() string { func (*InvalidMessage) ProtoMessage() {} func (x *InvalidMessage) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[11] + mi := &file_exschemapath_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -807,7 +926,7 @@ func (x *InvalidMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidMessage.ProtoReflect.Descriptor instead. func (*InvalidMessage) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{11} + return file_exschemapath_proto_rawDescGZIP(), []int{12} } func (x *InvalidMessage) GetMapField() map[string]string { @@ -898,7 +1017,7 @@ type BadMessageKeyTwo struct { func (x *BadMessageKeyTwo) Reset() { *x = BadMessageKeyTwo{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[12] + mi := &file_exschemapath_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -911,7 +1030,7 @@ func (x *BadMessageKeyTwo) String() string { func (*BadMessageKeyTwo) ProtoMessage() {} func (x *BadMessageKeyTwo) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[12] + mi := &file_exschemapath_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +1043,7 @@ func (x *BadMessageKeyTwo) ProtoReflect() protoreflect.Message { // Deprecated: Use BadMessageKeyTwo.ProtoReflect.Descriptor instead. func (*BadMessageKeyTwo) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{12} + return file_exschemapath_proto_rawDescGZIP(), []int{13} } func (x *BadMessageKeyTwo) GetKey() string { @@ -945,7 +1064,7 @@ type BadMessageKey struct { func (x *BadMessageKey) Reset() { *x = BadMessageKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[13] + mi := &file_exschemapath_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -958,7 +1077,7 @@ func (x *BadMessageKey) String() string { func (*BadMessageKey) ProtoMessage() {} func (x *BadMessageKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[13] + mi := &file_exschemapath_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -971,7 +1090,7 @@ func (x *BadMessageKey) ProtoReflect() protoreflect.Message { // Deprecated: Use BadMessageKey.ProtoReflect.Descriptor instead. func (*BadMessageKey) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{13} + return file_exschemapath_proto_rawDescGZIP(), []int{14} } func (x *BadMessageKey) GetBadKeyType() float32 { @@ -993,7 +1112,7 @@ type BadMessageMember struct { func (x *BadMessageMember) Reset() { *x = BadMessageMember{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[14] + mi := &file_exschemapath_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1006,7 +1125,7 @@ func (x *BadMessageMember) String() string { func (*BadMessageMember) ProtoMessage() {} func (x *BadMessageMember) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[14] + mi := &file_exschemapath_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1019,7 +1138,7 @@ func (x *BadMessageMember) ProtoReflect() protoreflect.Message { // Deprecated: Use BadMessageMember.ProtoReflect.Descriptor instead. func (*BadMessageMember) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{14} + return file_exschemapath_proto_rawDescGZIP(), []int{15} } func (x *BadMessageMember) GetKey() string { @@ -1047,7 +1166,7 @@ type BadKeyPathMessage struct { func (x *BadKeyPathMessage) Reset() { *x = BadKeyPathMessage{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[15] + mi := &file_exschemapath_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1060,7 +1179,7 @@ func (x *BadKeyPathMessage) String() string { func (*BadKeyPathMessage) ProtoMessage() {} func (x *BadKeyPathMessage) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[15] + mi := &file_exschemapath_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1073,7 +1192,7 @@ func (x *BadKeyPathMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BadKeyPathMessage.ProtoReflect.Descriptor instead. func (*BadKeyPathMessage) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{15} + return file_exschemapath_proto_rawDescGZIP(), []int{16} } func (x *BadKeyPathMessage) GetKey() string { @@ -1094,7 +1213,7 @@ type InvalidKeyPathKey struct { func (x *InvalidKeyPathKey) Reset() { *x = InvalidKeyPathKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[16] + mi := &file_exschemapath_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1107,7 +1226,7 @@ func (x *InvalidKeyPathKey) String() string { func (*InvalidKeyPathKey) ProtoMessage() {} func (x *InvalidKeyPathKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[16] + mi := &file_exschemapath_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1120,7 +1239,7 @@ func (x *InvalidKeyPathKey) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidKeyPathKey.ProtoReflect.Descriptor instead. func (*InvalidKeyPathKey) Descriptor() ([]byte, []int) { - return file_exschemapath_proto_rawDescGZIP(), []int{16} + return file_exschemapath_proto_rawDescGZIP(), []int{17} } func (x *InvalidKeyPathKey) GetKey() string { @@ -1142,7 +1261,7 @@ type Root_InterfaceKey struct { func (x *Root_InterfaceKey) Reset() { *x = Root_InterfaceKey{} if protoimpl.UnsafeEnabled { - mi := &file_exschemapath_proto_msgTypes[17] + mi := &file_exschemapath_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1155,7 +1274,7 @@ func (x *Root_InterfaceKey) String() string { func (*Root_InterfaceKey) ProtoMessage() {} func (x *Root_InterfaceKey) ProtoReflect() protoreflect.Message { - mi := &file_exschemapath_proto_msgTypes[17] + mi := &file_exschemapath_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1228,7 +1347,7 @@ var file_exschemapath_proto_rawDesc = []byte{ 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0x82, 0x41, 0x17, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe3, 0x05, 0x0a, 0x0e, + 0x65, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x0a, 0x0a, 0x0e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x02, 0x62, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, @@ -1274,151 +1393,199 @@ var file_exschemapath_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x6e, 0x65, 0x12, 0x28, 0x0a, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x74, 0x77, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x09, 0x82, 0x41, 0x06, 0x2f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x54, - 0x77, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x38, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x82, 0x41, - 0x0c, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x52, 0x03, 0x73, - 0x74, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x54, 0x0a, 0x0a, 0x73, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0x82, 0x41, - 0x32, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x73, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x2d, 0x6b, 0x65, 0x79, 0x7c, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, - 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x2d, - 0x6b, 0x65, 0x79, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3e, - 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xb6, - 0x01, 0x0a, 0x18, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x03, 0x73, - 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, - 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x1b, 0x82, 0x41, 0x18, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x61, - 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x03, 0x73, 0x74, - 0x72, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x70, 0x61, 0x74, 0x68, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4b, - 0x65, 0x79, 0x42, 0x18, 0x82, 0x41, 0x15, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, - 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x07, 0x6b, 0x65, 0x79, - 0x5f, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x82, 0x41, 0x1d, 0x2f, - 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, - 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x6f, 0x6e, 0x65, 0x52, 0x06, 0x6b, 0x65, - 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, - 0x74, 0x68, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x59, 0x0a, 0x10, 0x4e, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x45, - 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, + 0x77, 0x6f, 0x12, 0x56, 0x0a, 0x0f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x1c, 0x82, 0x41, 0x19, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, - 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x73, 0x74, 0x72, - 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x16, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4b, 0x65, 0x79, - 0x12, 0x43, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, - 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x2b, 0x82, 0x41, 0x28, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, - 0x69, 0x73, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x7c, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, - 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6e, 0x61, 0x6d, 0x65, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4b, 0x65, 0x79, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x22, 0x5e, 0x0a, 0x12, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1b, 0x82, 0x41, - 0x18, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x22, 0xb1, 0x06, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x14, 0x82, 0x41, 0x11, 0x2f, 0x61, 0x6e, 0x2f, 0x69, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, - 0x74, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x4b, 0x65, 0x79, 0x42, 0x0c, 0x82, 0x41, 0x09, 0x2f, 0x6f, 0x6e, 0x65, 0x7c, 0x2f, 0x74, - 0x77, 0x6f, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x19, 0x0a, 0x02, 0x6b, 0x65, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x09, 0x82, 0x41, 0x06, 0x2f, 0x74, 0x68, 0x72, 0x65, 0x65, 0x52, 0x02, 0x6b, - 0x65, 0x12, 0x35, 0x0a, 0x02, 0x62, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x08, 0x82, 0x41, 0x05, 0x2f, - 0x66, 0x6f, 0x75, 0x72, 0x52, 0x02, 0x62, 0x6b, 0x12, 0x38, 0x0a, 0x02, 0x62, 0x6d, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, - 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x42, 0x08, 0x82, 0x41, 0x05, 0x2f, 0x66, 0x69, 0x76, 0x65, 0x52, 0x02, - 0x62, 0x6d, 0x12, 0x59, 0x0a, 0x16, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x82, 0x41, 0x09, 0x2f, 0x6f, - 0x6e, 0x65, 0x5b, 0x74, 0x77, 0x6f, 0x5d, 0x52, 0x14, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3e, 0x0a, - 0x06, 0x62, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x54, 0x77, 0x6f, 0x42, 0x07, 0x82, - 0x41, 0x04, 0x2f, 0x73, 0x69, 0x78, 0x52, 0x05, 0x62, 0x6b, 0x54, 0x77, 0x6f, 0x12, 0x79, 0x0a, - 0x22, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x78, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0e, 0x82, 0x41, 0x0b, 0x2f, 0x73, 0x69, 0x78, - 0x7c, 0x2f, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x52, 0x1f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x04, 0x62, 0x6b, 0x70, 0x6d, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x09, 0x82, 0x41, 0x06, 0x2f, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x04, 0x62, 0x6b, 0x70, 0x6d, 0x12, 0x3d, 0x0a, 0x04, 0x69, 0x6b, 0x70, 0x6b, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4b, 0x65, 0x79, - 0x50, 0x61, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x42, 0x08, 0x82, 0x41, 0x05, 0x2f, 0x6e, 0x69, 0x6e, - 0x65, 0x52, 0x04, 0x69, 0x6b, 0x70, 0x6b, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, 0x0a, 0x10, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4b, 0x65, 0x79, 0x54, 0x77, 0x6f, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x82, 0x41, 0x0d, 0x2f, 0x6f, 0x6e, 0x65, 0x7c, 0x2f, - 0x6f, 0x6e, 0x65, 0x2f, 0x74, 0x77, 0x6f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x0d, - 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, - 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x02, 0x42, 0x0c, 0x82, 0x41, 0x09, 0x2f, 0x66, 0x6f, 0x75, 0x72, 0x2f, 0x6b, 0x65, - 0x79, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, - 0x10, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0x82, 0x41, 0x07, 0x2f, 0x6f, 0x6b, 0x2d, 0x6b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x26, 0x0a, 0x08, 0x62, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x0b, 0x82, 0x41, 0x08, 0x2f, 0x62, 0x61, 0x64, 0x2d, 0x6b, 0x65, 0x79, 0x52, 0x07, - 0x62, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2b, 0x0a, 0x11, 0x42, 0x61, 0x64, 0x4b, 0x65, - 0x79, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x82, 0x41, 0x01, 0x2f, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4b, - 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, 0x82, 0x41, 0x09, 0x2f, 0x6f, 0x6e, 0x65, 0x5b, - 0x74, 0x77, 0x6f, 0x5d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x2a, 0x7e, 0x0a, 0x0b, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x55, 0x4d, - 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x0b, 0x45, 0x4e, 0x55, 0x4d, - 0x5f, 0x56, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x56, 0x41, - 0x4c, 0x5f, 0x4f, 0x4e, 0x45, 0x12, 0x1b, 0x0a, 0x0b, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, - 0x4c, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x56, 0x41, 0x4c, 0x5f, 0x54, - 0x57, 0x4f, 0x12, 0x25, 0x0a, 0x10, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x46, 0x4f, - 0x52, 0x54, 0x59, 0x54, 0x57, 0x4f, 0x10, 0x2a, 0x1a, 0x0f, 0x82, 0x41, 0x0c, 0x56, 0x41, 0x4c, - 0x5f, 0x46, 0x4f, 0x52, 0x54, 0x59, 0x54, 0x57, 0x4f, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6d, 0x61, 0x70, - 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x65, 0x42, 0x16, 0x82, 0x41, 0x10, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, + 0x2d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x41, 0x01, 0x52, 0x0e, 0x6c, 0x65, 0x61, 0x66, + 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0d, 0x6c, 0x65, + 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x10, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x6f, 0x6f, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0x82, 0x41, 0x0e, 0x2f, 0x6c, 0x65, 0x61, 0x66, + 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x62, 0x6f, 0x6f, 0x6c, 0x88, 0x41, 0x01, 0x52, 0x0c, 0x6c, 0x65, + 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x4a, 0x0a, 0x0c, 0x6c, 0x65, + 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x13, 0x82, 0x41, 0x0d, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x2d, 0x69, 0x6e, 0x74, 0x88, 0x41, 0x01, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x66, 0x6c, + 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x14, 0x82, 0x41, 0x0e, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, + 0x2d, 0x75, 0x69, 0x6e, 0x74, 0x88, 0x41, 0x01, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0e, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x15, 0x82, 0x41, 0x0f, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x41, 0x01, 0x52, 0x0d, 0x6c, 0x65, 0x61, + 0x66, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x12, 0x6c, 0x65, + 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x36, 0x34, + 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x19, 0x82, 0x41, 0x13, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x36, 0x34, 0x88, 0x41, 0x01, 0x52, 0x11, 0x6c, 0x65, 0x61, + 0x66, 0x6c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x36, 0x34, 0x12, 0x58, + 0x0a, 0x0e, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x55, 0x6e, 0x69, + 0x6f, 0x6e, 0x42, 0x15, 0x82, 0x41, 0x0f, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, + 0x2d, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x90, 0x41, 0x01, 0x52, 0x0d, 0x6c, 0x65, 0x61, 0x66, 0x6c, + 0x69, 0x73, 0x74, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, + 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x82, 0x41, 0x0f, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, + 0x69, 0x73, 0x74, 0x2d, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x26, + 0x0a, 0x04, 0x75, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x12, 0x82, 0x41, + 0x0f, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x75, 0x6e, 0x69, 0x6f, 0x6e, + 0x52, 0x04, 0x75, 0x69, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, + 0x61, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, + 0x12, 0x82, 0x41, 0x0f, 0x2f, 0x6c, 0x65, 0x61, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x75, 0x6e, + 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x13, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x64, + 0x12, 0x38, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0f, 0x82, 0x41, 0x0c, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2f, 0x73, 0x74, 0x72, 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x11, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, + 0x12, 0x54, 0x0a, 0x0a, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0x82, 0x41, 0x32, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, + 0x61, 0x6d, 0x65, 0x2f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x2d, 0x6b, 0x65, 0x79, 0x7c, 0x2f, + 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x2d, 0x6b, 0x65, 0x79, 0x52, 0x09, 0x73, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xb6, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1b, 0x82, 0x41, 0x18, 0x2f, 0x6c, 0x69, 0x73, + 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x2d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x4e, 0x65, 0x73, + 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x42, 0x18, 0x82, 0x41, 0x15, 0x2f, + 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, + 0x6c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x80, 0x01, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, + 0x79, 0x12, 0x39, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x20, 0x82, 0x41, 0x1d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, + 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x6b, 0x65, 0x79, + 0x2d, 0x6f, 0x6e, 0x65, 0x52, 0x06, 0x6b, 0x65, 0x79, 0x4f, 0x6e, 0x65, 0x12, 0x34, 0x0a, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x78, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x05, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x22, 0x59, 0x0a, 0x10, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1c, 0x82, 0x41, 0x19, 0x2f, + 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x2d, + 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x73, 0x74, 0x72, 0x52, 0x03, 0x73, 0x74, 0x72, 0x22, 0xd8, 0x01, + 0x0a, 0x16, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x2d, 0x82, 0x41, 0x2a, 0x2f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x7c, 0x2f, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3f, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0x82, 0x41, 0x28, + 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x7c, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, + 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x5e, 0x0a, 0x12, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x4b, 0x65, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x48, + 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x79, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1b, 0x82, 0x41, 0x18, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x2d, + 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0xb1, 0x06, 0x0a, 0x0e, 0x49, 0x6e, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x09, 0x6d, + 0x61, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x14, 0x82, 0x41, 0x11, 0x2f, + 0x61, 0x6e, 0x2f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x52, 0x08, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, + 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6e, 0x6f, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3d, 0x0a, 0x02, 0x6b, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x0c, 0x82, 0x41, + 0x09, 0x2f, 0x6f, 0x6e, 0x65, 0x7c, 0x2f, 0x74, 0x77, 0x6f, 0x52, 0x02, 0x6b, 0x6d, 0x12, 0x19, + 0x0a, 0x02, 0x6b, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x09, 0x82, 0x41, 0x06, 0x2f, + 0x74, 0x68, 0x72, 0x65, 0x65, 0x52, 0x02, 0x6b, 0x65, 0x12, 0x35, 0x0a, 0x02, 0x62, 0x6b, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, + 0x65, 0x79, 0x42, 0x08, 0x82, 0x41, 0x05, 0x2f, 0x66, 0x6f, 0x75, 0x72, 0x52, 0x02, 0x62, 0x6b, + 0x12, 0x38, 0x0a, 0x02, 0x62, 0x6d, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, + 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x08, 0x82, 0x41, + 0x05, 0x2f, 0x66, 0x69, 0x76, 0x65, 0x52, 0x02, 0x62, 0x6d, 0x12, 0x59, 0x0a, 0x16, 0x69, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x79, 0x77, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x0c, 0x82, 0x41, 0x09, 0x2f, 0x6f, 0x6e, 0x65, 0x5b, 0x74, 0x77, 0x6f, 0x5d, 0x52, + 0x14, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x62, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, + 0x65, 0x79, 0x54, 0x77, 0x6f, 0x42, 0x07, 0x82, 0x41, 0x04, 0x2f, 0x73, 0x69, 0x78, 0x52, 0x05, + 0x62, 0x6b, 0x54, 0x77, 0x6f, 0x12, 0x79, 0x0a, 0x22, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x65, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x66, 0x6f, + 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, + 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, + 0x0e, 0x82, 0x41, 0x0b, 0x2f, 0x73, 0x69, 0x78, 0x7c, 0x2f, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x52, + 0x1f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, + 0x12, 0x3e, 0x0a, 0x04, 0x62, 0x6b, 0x70, 0x6d, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x42, 0x61, + 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, + 0x09, 0x82, 0x41, 0x06, 0x2f, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x04, 0x62, 0x6b, 0x70, 0x6d, + 0x12, 0x3d, 0x0a, 0x04, 0x69, 0x6b, 0x70, 0x6b, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x42, + 0x08, 0x82, 0x41, 0x05, 0x2f, 0x6e, 0x69, 0x6e, 0x65, 0x52, 0x04, 0x69, 0x6b, 0x70, 0x6b, 0x1a, + 0x3b, 0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, 0x0a, 0x10, + 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x54, 0x77, 0x6f, + 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x82, + 0x41, 0x0d, 0x2f, 0x6f, 0x6e, 0x65, 0x7c, 0x2f, 0x6f, 0x6e, 0x65, 0x2f, 0x74, 0x77, 0x6f, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x0d, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x0c, 0x62, 0x61, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x0c, 0x82, 0x41, 0x09, + 0x2f, 0x66, 0x6f, 0x75, 0x72, 0x2f, 0x6b, 0x65, 0x79, 0x52, 0x0a, 0x62, 0x61, 0x64, 0x4b, 0x65, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x10, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0x82, 0x41, 0x07, 0x2f, 0x6f, 0x6b, 0x2d, 0x6b, + 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x26, 0x0a, 0x08, 0x62, 0x61, 0x64, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0b, 0x82, 0x41, 0x08, 0x2f, 0x62, + 0x61, 0x64, 0x2d, 0x6b, 0x65, 0x79, 0x52, 0x07, 0x62, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x2b, 0x0a, 0x11, 0x42, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0x82, 0x41, 0x01, 0x2f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x11, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x4b, 0x65, + 0x79, 0x12, 0x1e, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0c, + 0x82, 0x41, 0x09, 0x2f, 0x6f, 0x6e, 0x65, 0x5b, 0x74, 0x77, 0x6f, 0x5d, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x2a, 0x7e, 0x0a, 0x0b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x1b, 0x0a, 0x0b, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x10, + 0x01, 0x1a, 0x0a, 0x82, 0x41, 0x07, 0x56, 0x41, 0x4c, 0x5f, 0x4f, 0x4e, 0x45, 0x12, 0x1b, 0x0a, + 0x0b, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x1a, 0x0a, + 0x82, 0x41, 0x07, 0x56, 0x41, 0x4c, 0x5f, 0x54, 0x57, 0x4f, 0x12, 0x25, 0x0a, 0x10, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x54, 0x59, 0x54, 0x57, 0x4f, 0x10, 0x2a, + 0x1a, 0x0f, 0x82, 0x41, 0x0c, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x54, 0x59, 0x54, 0x57, + 0x4f, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x79, 0x67, 0x6f, 0x74, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6d, 0x61, 0x70, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, + 0x61, 0x2f, 0x65, 0x78, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x74, 0x68, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1434,74 +1601,83 @@ func file_exschemapath_proto_rawDescGZIP() []byte { } var file_exschemapath_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_exschemapath_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_exschemapath_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_exschemapath_proto_goTypes = []interface{}{ (ExampleEnum)(0), // 0: exschemapath.ExampleEnum (*Root)(nil), // 1: exschemapath.Root (*Interface)(nil), // 2: exschemapath.Interface (*System)(nil), // 3: exschemapath.System (*ExampleMessage)(nil), // 4: exschemapath.ExampleMessage - (*ExampleMessageChild)(nil), // 5: exschemapath.ExampleMessageChild - (*ExampleMessageKey)(nil), // 6: exschemapath.ExampleMessageKey - (*ExampleMessageListMember)(nil), // 7: exschemapath.ExampleMessageListMember - (*NestedListKey)(nil), // 8: exschemapath.NestedListKey - (*NestedListMember)(nil), // 9: exschemapath.NestedListMember - (*ExampleMessageMultiKey)(nil), // 10: exschemapath.ExampleMessageMultiKey - (*MultiKeyListMember)(nil), // 11: exschemapath.MultiKeyListMember - (*InvalidMessage)(nil), // 12: exschemapath.InvalidMessage - (*BadMessageKeyTwo)(nil), // 13: exschemapath.BadMessageKeyTwo - (*BadMessageKey)(nil), // 14: exschemapath.BadMessageKey - (*BadMessageMember)(nil), // 15: exschemapath.BadMessageMember - (*BadKeyPathMessage)(nil), // 16: exschemapath.BadKeyPathMessage - (*InvalidKeyPathKey)(nil), // 17: exschemapath.InvalidKeyPathKey - (*Root_InterfaceKey)(nil), // 18: exschemapath.Root.InterfaceKey - nil, // 19: exschemapath.InvalidMessage.MapFieldEntry - (*ywrapper.StringValue)(nil), // 20: ywrapper.StringValue - (*ywrapper.BoolValue)(nil), // 21: ywrapper.BoolValue - (*ywrapper.BytesValue)(nil), // 22: ywrapper.BytesValue - (*ywrapper.Decimal64Value)(nil), // 23: ywrapper.Decimal64Value - (*ywrapper.IntValue)(nil), // 24: ywrapper.IntValue - (*ywrapper.UintValue)(nil), // 25: ywrapper.UintValue + (*ExampleUnion)(nil), // 5: exschemapath.ExampleUnion + (*ExampleMessageChild)(nil), // 6: exschemapath.ExampleMessageChild + (*ExampleMessageKey)(nil), // 7: exschemapath.ExampleMessageKey + (*ExampleMessageListMember)(nil), // 8: exschemapath.ExampleMessageListMember + (*NestedListKey)(nil), // 9: exschemapath.NestedListKey + (*NestedListMember)(nil), // 10: exschemapath.NestedListMember + (*ExampleMessageMultiKey)(nil), // 11: exschemapath.ExampleMessageMultiKey + (*MultiKeyListMember)(nil), // 12: exschemapath.MultiKeyListMember + (*InvalidMessage)(nil), // 13: exschemapath.InvalidMessage + (*BadMessageKeyTwo)(nil), // 14: exschemapath.BadMessageKeyTwo + (*BadMessageKey)(nil), // 15: exschemapath.BadMessageKey + (*BadMessageMember)(nil), // 16: exschemapath.BadMessageMember + (*BadKeyPathMessage)(nil), // 17: exschemapath.BadKeyPathMessage + (*InvalidKeyPathKey)(nil), // 18: exschemapath.InvalidKeyPathKey + (*Root_InterfaceKey)(nil), // 19: exschemapath.Root.InterfaceKey + nil, // 20: exschemapath.InvalidMessage.MapFieldEntry + (*ywrapper.StringValue)(nil), // 21: ywrapper.StringValue + (*ywrapper.BoolValue)(nil), // 22: ywrapper.BoolValue + (*ywrapper.BytesValue)(nil), // 23: ywrapper.BytesValue + (*ywrapper.Decimal64Value)(nil), // 24: ywrapper.Decimal64Value + (*ywrapper.IntValue)(nil), // 25: ywrapper.IntValue + (*ywrapper.UintValue)(nil), // 26: ywrapper.UintValue } var file_exschemapath_proto_depIdxs = []int32{ 3, // 0: exschemapath.Root.system:type_name -> exschemapath.System - 18, // 1: exschemapath.Root.interface:type_name -> exschemapath.Root.InterfaceKey - 20, // 2: exschemapath.Interface.description:type_name -> ywrapper.StringValue - 20, // 3: exschemapath.System.hostname:type_name -> ywrapper.StringValue - 21, // 4: exschemapath.ExampleMessage.bo:type_name -> ywrapper.BoolValue - 22, // 5: exschemapath.ExampleMessage.by:type_name -> ywrapper.BytesValue - 23, // 6: exschemapath.ExampleMessage.de:type_name -> ywrapper.Decimal64Value - 24, // 7: exschemapath.ExampleMessage.in:type_name -> ywrapper.IntValue - 20, // 8: exschemapath.ExampleMessage.str:type_name -> ywrapper.StringValue - 25, // 9: exschemapath.ExampleMessage.ui:type_name -> ywrapper.UintValue - 5, // 10: exschemapath.ExampleMessage.ex:type_name -> exschemapath.ExampleMessageChild - 6, // 11: exschemapath.ExampleMessage.em:type_name -> exschemapath.ExampleMessageKey - 10, // 12: exschemapath.ExampleMessage.multi:type_name -> exschemapath.ExampleMessageMultiKey + 19, // 1: exschemapath.Root.interface:type_name -> exschemapath.Root.InterfaceKey + 21, // 2: exschemapath.Interface.description:type_name -> ywrapper.StringValue + 21, // 3: exschemapath.System.hostname:type_name -> ywrapper.StringValue + 22, // 4: exschemapath.ExampleMessage.bo:type_name -> ywrapper.BoolValue + 23, // 5: exschemapath.ExampleMessage.by:type_name -> ywrapper.BytesValue + 24, // 6: exschemapath.ExampleMessage.de:type_name -> ywrapper.Decimal64Value + 25, // 7: exschemapath.ExampleMessage.in:type_name -> ywrapper.IntValue + 21, // 8: exschemapath.ExampleMessage.str:type_name -> ywrapper.StringValue + 26, // 9: exschemapath.ExampleMessage.ui:type_name -> ywrapper.UintValue + 6, // 10: exschemapath.ExampleMessage.ex:type_name -> exschemapath.ExampleMessageChild + 7, // 11: exschemapath.ExampleMessage.em:type_name -> exschemapath.ExampleMessageKey + 11, // 12: exschemapath.ExampleMessage.multi:type_name -> exschemapath.ExampleMessageMultiKey 0, // 13: exschemapath.ExampleMessage.en:type_name -> exschemapath.ExampleEnum - 20, // 14: exschemapath.ExampleMessage.compress:type_name -> ywrapper.StringValue - 20, // 15: exschemapath.ExampleMessageChild.str:type_name -> ywrapper.StringValue - 7, // 16: exschemapath.ExampleMessageKey.member:type_name -> exschemapath.ExampleMessageListMember - 20, // 17: exschemapath.ExampleMessageListMember.str:type_name -> ywrapper.StringValue - 8, // 18: exschemapath.ExampleMessageListMember.child_list:type_name -> exschemapath.NestedListKey - 9, // 19: exschemapath.NestedListKey.field:type_name -> exschemapath.NestedListMember - 20, // 20: exschemapath.NestedListMember.str:type_name -> ywrapper.StringValue - 11, // 21: exschemapath.ExampleMessageMultiKey.member:type_name -> exschemapath.MultiKeyListMember - 20, // 22: exschemapath.MultiKeyListMember.child:type_name -> ywrapper.StringValue - 19, // 23: exschemapath.InvalidMessage.map_field:type_name -> exschemapath.InvalidMessage.MapFieldEntry - 6, // 24: exschemapath.InvalidMessage.km:type_name -> exschemapath.ExampleMessageKey - 14, // 25: exschemapath.InvalidMessage.bk:type_name -> exschemapath.BadMessageKey - 15, // 26: exschemapath.InvalidMessage.bm:type_name -> exschemapath.BadMessageMember - 20, // 27: exschemapath.InvalidMessage.invalid_annotated_path:type_name -> ywrapper.StringValue - 13, // 28: exschemapath.InvalidMessage.bk_two:type_name -> exschemapath.BadMessageKeyTwo - 12, // 29: exschemapath.InvalidMessage.multiple_annotations_for_container:type_name -> exschemapath.InvalidMessage - 16, // 30: exschemapath.InvalidMessage.bkpm:type_name -> exschemapath.BadKeyPathMessage - 17, // 31: exschemapath.InvalidMessage.ikpk:type_name -> exschemapath.InvalidKeyPathKey - 2, // 32: exschemapath.Root.InterfaceKey.interface:type_name -> exschemapath.Interface - 33, // [33:33] is the sub-list for method output_type - 33, // [33:33] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 21, // 14: exschemapath.ExampleMessage.compress:type_name -> ywrapper.StringValue + 21, // 15: exschemapath.ExampleMessage.leaflist_string:type_name -> ywrapper.StringValue + 22, // 16: exschemapath.ExampleMessage.leaflist_bool:type_name -> ywrapper.BoolValue + 25, // 17: exschemapath.ExampleMessage.leaflist_int:type_name -> ywrapper.IntValue + 26, // 18: exschemapath.ExampleMessage.leaflist_uint:type_name -> ywrapper.UintValue + 23, // 19: exschemapath.ExampleMessage.leaflist_bytes:type_name -> ywrapper.BytesValue + 24, // 20: exschemapath.ExampleMessage.leaflist_decimal64:type_name -> ywrapper.Decimal64Value + 5, // 21: exschemapath.ExampleMessage.leaflist_union:type_name -> exschemapath.ExampleUnion + 0, // 22: exschemapath.ExampleUnion.enum:type_name -> exschemapath.ExampleEnum + 21, // 23: exschemapath.ExampleMessageChild.str:type_name -> ywrapper.StringValue + 8, // 24: exschemapath.ExampleMessageKey.member:type_name -> exschemapath.ExampleMessageListMember + 21, // 25: exschemapath.ExampleMessageListMember.str:type_name -> ywrapper.StringValue + 9, // 26: exschemapath.ExampleMessageListMember.child_list:type_name -> exschemapath.NestedListKey + 10, // 27: exschemapath.NestedListKey.field:type_name -> exschemapath.NestedListMember + 21, // 28: exschemapath.NestedListMember.str:type_name -> ywrapper.StringValue + 12, // 29: exschemapath.ExampleMessageMultiKey.member:type_name -> exschemapath.MultiKeyListMember + 21, // 30: exschemapath.MultiKeyListMember.child:type_name -> ywrapper.StringValue + 20, // 31: exschemapath.InvalidMessage.map_field:type_name -> exschemapath.InvalidMessage.MapFieldEntry + 7, // 32: exschemapath.InvalidMessage.km:type_name -> exschemapath.ExampleMessageKey + 15, // 33: exschemapath.InvalidMessage.bk:type_name -> exschemapath.BadMessageKey + 16, // 34: exschemapath.InvalidMessage.bm:type_name -> exschemapath.BadMessageMember + 21, // 35: exschemapath.InvalidMessage.invalid_annotated_path:type_name -> ywrapper.StringValue + 14, // 36: exschemapath.InvalidMessage.bk_two:type_name -> exschemapath.BadMessageKeyTwo + 13, // 37: exschemapath.InvalidMessage.multiple_annotations_for_container:type_name -> exschemapath.InvalidMessage + 17, // 38: exschemapath.InvalidMessage.bkpm:type_name -> exschemapath.BadKeyPathMessage + 18, // 39: exschemapath.InvalidMessage.ikpk:type_name -> exschemapath.InvalidKeyPathKey + 2, // 40: exschemapath.Root.InterfaceKey.interface:type_name -> exschemapath.Interface + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_exschemapath_proto_init() } @@ -1559,7 +1735,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExampleMessageChild); i { + switch v := v.(*ExampleUnion); i { case 0: return &v.state case 1: @@ -1571,7 +1747,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExampleMessageKey); i { + switch v := v.(*ExampleMessageChild); i { case 0: return &v.state case 1: @@ -1583,7 +1759,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExampleMessageListMember); i { + switch v := v.(*ExampleMessageKey); i { case 0: return &v.state case 1: @@ -1595,7 +1771,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NestedListKey); i { + switch v := v.(*ExampleMessageListMember); i { case 0: return &v.state case 1: @@ -1607,7 +1783,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NestedListMember); i { + switch v := v.(*NestedListKey); i { case 0: return &v.state case 1: @@ -1619,7 +1795,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExampleMessageMultiKey); i { + switch v := v.(*NestedListMember); i { case 0: return &v.state case 1: @@ -1631,7 +1807,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiKeyListMember); i { + switch v := v.(*ExampleMessageMultiKey); i { case 0: return &v.state case 1: @@ -1643,7 +1819,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvalidMessage); i { + switch v := v.(*MultiKeyListMember); i { case 0: return &v.state case 1: @@ -1655,7 +1831,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadMessageKeyTwo); i { + switch v := v.(*InvalidMessage); i { case 0: return &v.state case 1: @@ -1667,7 +1843,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadMessageKey); i { + switch v := v.(*BadMessageKeyTwo); i { case 0: return &v.state case 1: @@ -1679,7 +1855,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadMessageMember); i { + switch v := v.(*BadMessageKey); i { case 0: return &v.state case 1: @@ -1691,7 +1867,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BadKeyPathMessage); i { + switch v := v.(*BadMessageMember); i { case 0: return &v.state case 1: @@ -1703,7 +1879,7 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvalidKeyPathKey); i { + switch v := v.(*BadKeyPathMessage); i { case 0: return &v.state case 1: @@ -1715,6 +1891,18 @@ func file_exschemapath_proto_init() { } } file_exschemapath_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InvalidKeyPathKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_exschemapath_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Root_InterfaceKey); i { case 0: return &v.state @@ -1737,7 +1925,7 @@ func file_exschemapath_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_exschemapath_proto_rawDesc, NumEnums: 1, - NumMessages: 19, + NumMessages: 20, NumExtensions: 0, NumServices: 0, }, diff --git a/protomap/testdata/exschemapath/exschemapath.proto b/protomap/testdata/exschemapath/exschemapath.proto index aa6818cc9..f496e27e2 100644 --- a/protomap/testdata/exschemapath/exschemapath.proto +++ b/protomap/testdata/exschemapath/exschemapath.proto @@ -40,6 +40,19 @@ message ExampleMessage { string oneof_one = 12 [(yext.schemapath) = "/oneof"]; uint64 oneof_two = 13 [(yext.schemapath) = "/oneof"]; } + repeated ywrapper.StringValue leaflist_string = 14 [(yext.schemapath) = "/leaflist-string", (yext.leaflist) = true]; + repeated ywrapper.BoolValue leaflist_bool = 16 [(yext.schemapath) = "/leaflist-bool", (yext.leaflist) = true]; + repeated ywrapper.IntValue leaflist_int = 17 [(yext.schemapath) = "/leaflist-int", (yext.leaflist) = true]; + repeated ywrapper.UintValue leaflist_uint = 18 [(yext.schemapath) = "/leaflist-uint", (yext.leaflist) = true]; + repeated ywrapper.BytesValue leaflist_bytes = 19 [(yext.schemapath) = "/leaflist-bytes", (yext.leaflist) = true]; + repeated ywrapper.Decimal64Value leaflist_decimal64 = 20 [(yext.schemapath) = "/leaflist-decimal64", (yext.leaflist) = true]; + repeated ExampleUnion leaflist_union = 15 [(yext.schemapath) = "/leaflist-union", (yext.leaflistunion) = true]; +} + +message ExampleUnion { + string str = 1 [(yext.schemapath) = "/leaflist-union"]; + uint64 uint = 2 [(yext.schemapath) = "/leaflist-union"]; + ExampleEnum enum = 3 [(yext.schemapath) = "/leaflist-union"]; } enum ExampleEnum {