diff --git a/doc.go b/doc.go index 77f8107..2c052eb 100644 --- a/doc.go +++ b/doc.go @@ -3,7 +3,7 @@ // Package substraitgo contains the experimental go bindings for substrait // (https://substrait.io). // -// Current generated proto substrait version: v0.55.0 +// Current generated proto substrait version: v0.64.0 package substraitgo -//go:generate buf generate https://github.com/substrait-io/substrait.git#tag=v0.59.0 +//go:generate buf generate https://github.com/substrait-io/substrait.git#tag=v0.64.0 diff --git a/go.mod b/go.mod index 048f513..59b5cf6 100644 --- a/go.mod +++ b/go.mod @@ -30,6 +30,7 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/substrait-io/substrait-go v1.2.0 // indirect golang.org/x/crypto v0.30.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect diff --git a/go.sum b/go.sum index 34ab7e4..1c05bba 100644 --- a/go.sum +++ b/go.sum @@ -56,6 +56,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/substrait-io/substrait v0.63.1 h1:XNPvrEYNPjDqenK4TxqBDDUNzglafdjzjejzQqEwk5Y= github.com/substrait-io/substrait v0.63.1/go.mod h1:MPFNw6sToJgpD5Z2rj0rQrdP/Oq8HG7Z2t3CAEHtkHw= +github.com/substrait-io/substrait-go v1.2.0 h1:3ZNRkc8FYD7ifCagKEOZQtUcgMceMQfwo2N1NGaK4Q4= +github.com/substrait-io/substrait-go v1.2.0/go.mod h1:IPsy24rdjp/buXR+T8ENl6QCnSCS6h+uM8P+GaZez7c= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= diff --git a/plan/builders.go b/plan/builders.go index 0d24c73..b129106 100644 --- a/plan/builders.go +++ b/plan/builders.go @@ -4,7 +4,6 @@ package plan import ( "fmt" - substraitgo "github.com/substrait-io/substrait-go/v3" "github.com/substrait-io/substrait-go/v3/expr" "github.com/substrait-io/substrait-go/v3/extensions" @@ -124,6 +123,7 @@ type Builder interface { // Deprecated: Use VirtualTableFromExpr(...).Remap() instead. VirtualTableFromExprRemap(fieldNames []string, remap []int32, values ...expr.VirtualTableExpressionValue) (*VirtualTableReadRel, error) VirtualTableFromExpr(fieldNames []string, values ...expr.VirtualTableExpressionValue) (*VirtualTableReadRel, error) + IcebergTableFromMetadataFile(metadataURI string, schema types.NamedStruct) (*IcebergTableReadRel, error) // Deprecated: Use Sort(...).Remap() instead. SortRemap(input Rel, remap []int32, sorts ...expr.SortField) (*SortRel, error) Sort(input Rel, sorts ...expr.SortField) (*SortRel, error) @@ -587,6 +587,18 @@ func (b *builder) VirtualTable(fields []string, values ...expr.StructLiteralValu return b.VirtualTableRemap(fields, nil, values...) } +func (b *builder) IcebergTableFromMetadataFile(metadataURI string, schema types.NamedStruct) (*IcebergTableReadRel, error) { + tableType := &Direct{} + tableType.MetadataUri = metadataURI + + return &IcebergTableReadRel{ + baseReadRel: baseReadRel{ + baseSchema: schema, + }, + tableType: tableType, + }, nil +} + func (b *builder) SortRemap(input Rel, remap []int32, sorts ...expr.SortField) (*SortRel, error) { if input == nil { return nil, errNilInputRel diff --git a/plan/plan.go b/plan/plan.go index c57f13d..4f75872 100644 --- a/plan/plan.go +++ b/plan/plan.go @@ -411,10 +411,24 @@ func RelFromProto(rel *proto.Rel, reg expr.ExtensionRegistry) (Rel, error) { return nil, fmt.Errorf("error getting input to FetchRel: %w", err) } + var offset int64 + if off, ok := rel.Fetch.OffsetMode.(*proto.FetchRel_Offset); ok { + offset = off.Offset + } else { + return nil, fmt.Errorf("%w: missing required Offset field for Fetch Relation", substraitgo.ErrInvalidRel) + } + + var count int64 + if cnt, ok := rel.Fetch.CountMode.(*proto.FetchRel_Count); ok { + count = cnt.Count + } else { + return nil, fmt.Errorf("%w: missing required Count field for Fetch Relation", substraitgo.ErrInvalidRel) + } + out := &FetchRel{ input: input, - offset: rel.Fetch.Offset, - count: rel.Fetch.Count, + offset: offset, + count: count, advExtension: rel.Fetch.AdvancedExtension, } if rel.Fetch.Common != nil { diff --git a/plan/relations.go b/plan/relations.go index 030a048..b7a561b 100644 --- a/plan/relations.go +++ b/plan/relations.go @@ -371,6 +371,107 @@ func (e *ExtensionTableReadRel) Remap(mapping ...int32) (Rel, error) { return RemapHelper(e, mapping) } +type ( + SnapshotId proto.ReadRel_IcebergTable_MetadataFileRead_SnapshotId + SnapshotTimestamp proto.ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp + + IcebergSnapshot interface { + isSnapshot() + } +) + +func (*SnapshotId) isSnapshot() {} +func (*SnapshotTimestamp) isSnapshot() {} + +type ( + Direct proto.ReadRel_IcebergTable_MetadataFileRead + + IcebergTableType interface { + isTableType() + } +) + +func (*Direct) isTableType() {} + +// IcebergTableReadRel is a scan on iceberg table. +type IcebergTableReadRel struct { + baseReadRel + + tableType IcebergTableType + advExtension *extensions.AdvancedExtension +} + +func (n *IcebergTableReadRel) NamedTableAdvancedExtension() *extensions.AdvancedExtension { + return n.advExtension +} + +func (n *IcebergTableReadRel) RecordType() types.RecordType { + return n.remap(n.directOutputSchema()) +} + +func (n *IcebergTableReadRel) ToProtoPlanRel() *proto.PlanRel { + return &proto.PlanRel{ + RelType: &proto.PlanRel_Rel{ + Rel: n.ToProto(), + }, + } +} + +func (n *IcebergTableReadRel) ToProto() *proto.Rel { + readRel := n.toReadRelProto() + + if n.tableType != nil { + if directTableType, ok := n.tableType.(*Direct); ok { + readRel.ReadType = &proto.ReadRel_IcebergTable_{ + IcebergTable: &proto.ReadRel_IcebergTable{ + TableType: &proto.ReadRel_IcebergTable_Direct{ + Direct: (*proto.ReadRel_IcebergTable_MetadataFileRead)(directTableType), + }, + }, + } + } + } + + readRel.ReadType = &proto.ReadRel_IcebergTable_{ + IcebergTable: &proto.ReadRel_IcebergTable{ + TableType: &proto.ReadRel_IcebergTable_Direct{ + Direct: &proto.ReadRel_IcebergTable_MetadataFileRead{ + MetadataUri: "metadata_uri", + Snapshot: &proto.ReadRel_IcebergTable_MetadataFileRead_SnapshotId{ + SnapshotId: "snapshot_id", + }, + }, + }, + }, + } + return &proto.Rel{ + RelType: &proto.Rel_Read{ + Read: readRel, + }, + } +} + +func (n *IcebergTableReadRel) Copy(_ ...Rel) (Rel, error) { + return n, nil +} + +func (n *IcebergTableReadRel) CopyWithExpressionRewrite(rewriteFunc RewriteFunc, _ ...Rel) (Rel, error) { + newExprs, err := n.copyExpressions(rewriteFunc) + if err != nil { + return nil, err + } + if slices.Equal(newExprs, n.getExpressions()) { + return n, nil + } + nt := *n + nt.updateFilters(newExprs) + return &nt, nil +} + +func (n *IcebergTableReadRel) Remap(mapping ...int32) (Rel, error) { + return RemapHelper(n, mapping) +} + // PathType is the type of a LocalFileReadRel's uris. type PathType int8 @@ -897,10 +998,14 @@ func (f *FetchRel) ToProto() *proto.Rel { return &proto.Rel{ RelType: &proto.Rel_Fetch{ Fetch: &proto.FetchRel{ - Common: f.toProto(), - Input: f.input.ToProto(), - Offset: f.offset, - Count: f.count, + Common: f.toProto(), + Input: f.input.ToProto(), + OffsetMode: &proto.FetchRel_Offset{ + Offset: f.offset, + }, + CountMode: &proto.FetchRel_Count{ + Count: f.count, + }, AdvancedExtension: f.advExtension, }, }, diff --git a/proto/algebra.pb.go b/proto/algebra.pb.go index 67b5b94..b0aada0 100644 --- a/proto/algebra.pb.go +++ b/proto/algebra.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/algebra.proto @@ -468,6 +468,61 @@ func (WriteRel_WriteOp) EnumDescriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{21, 0} } +type WriteRel_CreateMode int32 + +const ( + WriteRel_CREATE_MODE_UNSPECIFIED WriteRel_CreateMode = 0 + WriteRel_CREATE_MODE_APPEND_IF_EXISTS WriteRel_CreateMode = 1 // Append the data to the table if it already exists + WriteRel_CREATE_MODE_REPLACE_IF_EXISTS WriteRel_CreateMode = 2 // Replace the table if it already exists ("OR REPLACE") + WriteRel_CREATE_MODE_IGNORE_IF_EXISTS WriteRel_CreateMode = 3 // Ignore the request if the table already exists ("IF NOT EXISTS") + WriteRel_CREATE_MODE_ERROR_IF_EXISTS WriteRel_CreateMode = 4 // Throw an error if the table already exists (default behavior) +) + +// Enum value maps for WriteRel_CreateMode. +var ( + WriteRel_CreateMode_name = map[int32]string{ + 0: "CREATE_MODE_UNSPECIFIED", + 1: "CREATE_MODE_APPEND_IF_EXISTS", + 2: "CREATE_MODE_REPLACE_IF_EXISTS", + 3: "CREATE_MODE_IGNORE_IF_EXISTS", + 4: "CREATE_MODE_ERROR_IF_EXISTS", + } + WriteRel_CreateMode_value = map[string]int32{ + "CREATE_MODE_UNSPECIFIED": 0, + "CREATE_MODE_APPEND_IF_EXISTS": 1, + "CREATE_MODE_REPLACE_IF_EXISTS": 2, + "CREATE_MODE_IGNORE_IF_EXISTS": 3, + "CREATE_MODE_ERROR_IF_EXISTS": 4, + } +) + +func (x WriteRel_CreateMode) Enum() *WriteRel_CreateMode { + p := new(WriteRel_CreateMode) + *p = x + return p +} + +func (x WriteRel_CreateMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WriteRel_CreateMode) Descriptor() protoreflect.EnumDescriptor { + return file_substrait_algebra_proto_enumTypes[7].Descriptor() +} + +func (WriteRel_CreateMode) Type() protoreflect.EnumType { + return &file_substrait_algebra_proto_enumTypes[7] +} + +func (x WriteRel_CreateMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WriteRel_CreateMode.Descriptor instead. +func (WriteRel_CreateMode) EnumDescriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{21, 1} +} + type WriteRel_OutputMode int32 const ( @@ -507,11 +562,11 @@ func (x WriteRel_OutputMode) String() string { } func (WriteRel_OutputMode) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[7].Descriptor() + return file_substrait_algebra_proto_enumTypes[8].Descriptor() } func (WriteRel_OutputMode) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[7] + return &file_substrait_algebra_proto_enumTypes[8] } func (x WriteRel_OutputMode) Number() protoreflect.EnumNumber { @@ -520,7 +575,7 @@ func (x WriteRel_OutputMode) Number() protoreflect.EnumNumber { // Deprecated: Use WriteRel_OutputMode.Descriptor instead. func (WriteRel_OutputMode) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{21, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{21, 2} } // Most joins will use one of the following behaviors. To avoid the complexity @@ -571,11 +626,11 @@ func (x ComparisonJoinKey_SimpleComparisonType) String() string { } func (ComparisonJoinKey_SimpleComparisonType) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[8].Descriptor() + return file_substrait_algebra_proto_enumTypes[9].Descriptor() } func (ComparisonJoinKey_SimpleComparisonType) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[8] + return &file_substrait_algebra_proto_enumTypes[9] } func (x ComparisonJoinKey_SimpleComparisonType) Number() protoreflect.EnumNumber { @@ -584,7 +639,7 @@ func (x ComparisonJoinKey_SimpleComparisonType) Number() protoreflect.EnumNumber // Deprecated: Use ComparisonJoinKey_SimpleComparisonType.Descriptor instead. func (ComparisonJoinKey_SimpleComparisonType) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{22, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{24, 0} } type HashJoinRel_JoinType int32 @@ -650,11 +705,11 @@ func (x HashJoinRel_JoinType) String() string { } func (HashJoinRel_JoinType) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[9].Descriptor() + return file_substrait_algebra_proto_enumTypes[10].Descriptor() } func (HashJoinRel_JoinType) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[9] + return &file_substrait_algebra_proto_enumTypes[10] } func (x HashJoinRel_JoinType) Number() protoreflect.EnumNumber { @@ -663,7 +718,7 @@ func (x HashJoinRel_JoinType) Number() protoreflect.EnumNumber { // Deprecated: Use HashJoinRel_JoinType.Descriptor instead. func (HashJoinRel_JoinType) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{23, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{25, 0} } type MergeJoinRel_JoinType int32 @@ -729,11 +784,11 @@ func (x MergeJoinRel_JoinType) String() string { } func (MergeJoinRel_JoinType) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[10].Descriptor() + return file_substrait_algebra_proto_enumTypes[11].Descriptor() } func (MergeJoinRel_JoinType) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[10] + return &file_substrait_algebra_proto_enumTypes[11] } func (x MergeJoinRel_JoinType) Number() protoreflect.EnumNumber { @@ -742,7 +797,7 @@ func (x MergeJoinRel_JoinType) Number() protoreflect.EnumNumber { // Deprecated: Use MergeJoinRel_JoinType.Descriptor instead. func (MergeJoinRel_JoinType) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{24, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{26, 0} } type NestedLoopJoinRel_JoinType int32 @@ -808,11 +863,11 @@ func (x NestedLoopJoinRel_JoinType) String() string { } func (NestedLoopJoinRel_JoinType) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[11].Descriptor() + return file_substrait_algebra_proto_enumTypes[12].Descriptor() } func (NestedLoopJoinRel_JoinType) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[11] + return &file_substrait_algebra_proto_enumTypes[12] } func (x NestedLoopJoinRel_JoinType) Number() protoreflect.EnumNumber { @@ -821,7 +876,7 @@ func (x NestedLoopJoinRel_JoinType) Number() protoreflect.EnumNumber { // Deprecated: Use NestedLoopJoinRel_JoinType.Descriptor instead. func (NestedLoopJoinRel_JoinType) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{25, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{27, 0} } type Expression_WindowFunction_BoundsType int32 @@ -863,11 +918,11 @@ func (x Expression_WindowFunction_BoundsType) String() string { } func (Expression_WindowFunction_BoundsType) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[12].Descriptor() + return file_substrait_algebra_proto_enumTypes[13].Descriptor() } func (Expression_WindowFunction_BoundsType) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[12] + return &file_substrait_algebra_proto_enumTypes[13] } func (x Expression_WindowFunction_BoundsType) Number() protoreflect.EnumNumber { @@ -876,7 +931,7 @@ func (x Expression_WindowFunction_BoundsType) Number() protoreflect.EnumNumber { // Deprecated: Use Expression_WindowFunction_BoundsType.Descriptor instead. func (Expression_WindowFunction_BoundsType) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0} } type Expression_Cast_FailureBehavior int32 @@ -912,11 +967,11 @@ func (x Expression_Cast_FailureBehavior) String() string { } func (Expression_Cast_FailureBehavior) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[13].Descriptor() + return file_substrait_algebra_proto_enumTypes[14].Descriptor() } func (Expression_Cast_FailureBehavior) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[13] + return &file_substrait_algebra_proto_enumTypes[14] } func (x Expression_Cast_FailureBehavior) Number() protoreflect.EnumNumber { @@ -925,7 +980,7 @@ func (x Expression_Cast_FailureBehavior) Number() protoreflect.EnumNumber { // Deprecated: Use Expression_Cast_FailureBehavior.Descriptor instead. func (Expression_Cast_FailureBehavior) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 6, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 6, 0} } type Expression_Subquery_SetPredicate_PredicateOp int32 @@ -961,11 +1016,11 @@ func (x Expression_Subquery_SetPredicate_PredicateOp) String() string { } func (Expression_Subquery_SetPredicate_PredicateOp) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[14].Descriptor() + return file_substrait_algebra_proto_enumTypes[15].Descriptor() } func (Expression_Subquery_SetPredicate_PredicateOp) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[14] + return &file_substrait_algebra_proto_enumTypes[15] } func (x Expression_Subquery_SetPredicate_PredicateOp) Number() protoreflect.EnumNumber { @@ -974,7 +1029,7 @@ func (x Expression_Subquery_SetPredicate_PredicateOp) Number() protoreflect.Enum // Deprecated: Use Expression_Subquery_SetPredicate_PredicateOp.Descriptor instead. func (Expression_Subquery_SetPredicate_PredicateOp) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 2, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 2, 0} } type Expression_Subquery_SetComparison_ComparisonOp int32 @@ -1022,11 +1077,11 @@ func (x Expression_Subquery_SetComparison_ComparisonOp) String() string { } func (Expression_Subquery_SetComparison_ComparisonOp) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[15].Descriptor() + return file_substrait_algebra_proto_enumTypes[16].Descriptor() } func (Expression_Subquery_SetComparison_ComparisonOp) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[15] + return &file_substrait_algebra_proto_enumTypes[16] } func (x Expression_Subquery_SetComparison_ComparisonOp) Number() protoreflect.EnumNumber { @@ -1035,7 +1090,7 @@ func (x Expression_Subquery_SetComparison_ComparisonOp) Number() protoreflect.En // Deprecated: Use Expression_Subquery_SetComparison_ComparisonOp.Descriptor instead. func (Expression_Subquery_SetComparison_ComparisonOp) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 3, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 3, 0} } type Expression_Subquery_SetComparison_ReductionOp int32 @@ -1071,11 +1126,11 @@ func (x Expression_Subquery_SetComparison_ReductionOp) String() string { } func (Expression_Subquery_SetComparison_ReductionOp) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[16].Descriptor() + return file_substrait_algebra_proto_enumTypes[17].Descriptor() } func (Expression_Subquery_SetComparison_ReductionOp) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[16] + return &file_substrait_algebra_proto_enumTypes[17] } func (x Expression_Subquery_SetComparison_ReductionOp) Number() protoreflect.EnumNumber { @@ -1084,7 +1139,7 @@ func (x Expression_Subquery_SetComparison_ReductionOp) Number() protoreflect.Enu // Deprecated: Use Expression_Subquery_SetComparison_ReductionOp.Descriptor instead. func (Expression_Subquery_SetComparison_ReductionOp) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 3, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 3, 1} } type SortField_SortDirection int32 @@ -1129,11 +1184,11 @@ func (x SortField_SortDirection) String() string { } func (SortField_SortDirection) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[17].Descriptor() + return file_substrait_algebra_proto_enumTypes[18].Descriptor() } func (SortField_SortDirection) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[17] + return &file_substrait_algebra_proto_enumTypes[18] } func (x SortField_SortDirection) Number() protoreflect.EnumNumber { @@ -1142,7 +1197,7 @@ func (x SortField_SortDirection) Number() protoreflect.EnumNumber { // Deprecated: Use SortField_SortDirection.Descriptor instead. func (SortField_SortDirection) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{29, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{31, 0} } // Method in which equivalent records are merged before being aggregated. @@ -1182,11 +1237,11 @@ func (x AggregateFunction_AggregationInvocation) String() string { } func (AggregateFunction_AggregationInvocation) Descriptor() protoreflect.EnumDescriptor { - return file_substrait_algebra_proto_enumTypes[18].Descriptor() + return file_substrait_algebra_proto_enumTypes[19].Descriptor() } func (AggregateFunction_AggregationInvocation) Type() protoreflect.EnumType { - return &file_substrait_algebra_proto_enumTypes[18] + return &file_substrait_algebra_proto_enumTypes[19] } func (x AggregateFunction_AggregationInvocation) Number() protoreflect.EnumNumber { @@ -1195,22 +1250,21 @@ func (x AggregateFunction_AggregationInvocation) Number() protoreflect.EnumNumbe // Deprecated: Use AggregateFunction_AggregationInvocation.Descriptor instead. func (AggregateFunction_AggregationInvocation) EnumDescriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{32, 0} } // Common fields for all relational operators type RelCommon struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to EmitKind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to EmitKind: // // *RelCommon_Direct_ // *RelCommon_Emit_ EmitKind isRelCommon_EmitKind `protobuf_oneof:"emit_kind"` Hint *RelCommon_Hint `protobuf:"bytes,3,opt,name=hint,proto3" json:"hint,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,4,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon) Reset() { @@ -1243,23 +1297,27 @@ func (*RelCommon) Descriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{0} } -func (m *RelCommon) GetEmitKind() isRelCommon_EmitKind { - if m != nil { - return m.EmitKind +func (x *RelCommon) GetEmitKind() isRelCommon_EmitKind { + if x != nil { + return x.EmitKind } return nil } func (x *RelCommon) GetDirect() *RelCommon_Direct { - if x, ok := x.GetEmitKind().(*RelCommon_Direct_); ok { - return x.Direct + if x != nil { + if x, ok := x.EmitKind.(*RelCommon_Direct_); ok { + return x.Direct + } } return nil } func (x *RelCommon) GetEmit() *RelCommon_Emit { - if x, ok := x.GetEmitKind().(*RelCommon_Emit_); ok { - return x.Emit + if x != nil { + if x, ok := x.EmitKind.(*RelCommon_Emit_); ok { + return x.Emit + } } return nil } @@ -1298,10 +1356,7 @@ func (*RelCommon_Emit_) isRelCommon_EmitKind() {} // The scan operator of base data (physical or virtual), including filtering and projection. type ReadRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` BaseSchema *NamedStruct `protobuf:"bytes,2,opt,name=base_schema,json=baseSchema,proto3" json:"base_schema,omitempty"` Filter *Expression `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` @@ -1310,13 +1365,16 @@ type ReadRel struct { AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` // Definition of which type of scan operation is to be performed // - // Types that are assignable to ReadType: + // Types that are valid to be assigned to ReadType: // // *ReadRel_VirtualTable_ // *ReadRel_LocalFiles_ // *ReadRel_NamedTable_ // *ReadRel_ExtensionTable_ - ReadType isReadRel_ReadType `protobuf_oneof:"read_type"` + // *ReadRel_IcebergTable_ + ReadType isReadRel_ReadType `protobuf_oneof:"read_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel) Reset() { @@ -1391,37 +1449,54 @@ func (x *ReadRel) GetAdvancedExtension() *extensions.AdvancedExtension { return nil } -func (m *ReadRel) GetReadType() isReadRel_ReadType { - if m != nil { - return m.ReadType +func (x *ReadRel) GetReadType() isReadRel_ReadType { + if x != nil { + return x.ReadType } return nil } func (x *ReadRel) GetVirtualTable() *ReadRel_VirtualTable { - if x, ok := x.GetReadType().(*ReadRel_VirtualTable_); ok { - return x.VirtualTable + if x != nil { + if x, ok := x.ReadType.(*ReadRel_VirtualTable_); ok { + return x.VirtualTable + } } return nil } func (x *ReadRel) GetLocalFiles() *ReadRel_LocalFiles { - if x, ok := x.GetReadType().(*ReadRel_LocalFiles_); ok { - return x.LocalFiles + if x != nil { + if x, ok := x.ReadType.(*ReadRel_LocalFiles_); ok { + return x.LocalFiles + } } return nil } func (x *ReadRel) GetNamedTable() *ReadRel_NamedTable { - if x, ok := x.GetReadType().(*ReadRel_NamedTable_); ok { - return x.NamedTable + if x != nil { + if x, ok := x.ReadType.(*ReadRel_NamedTable_); ok { + return x.NamedTable + } } return nil } func (x *ReadRel) GetExtensionTable() *ReadRel_ExtensionTable { - if x, ok := x.GetReadType().(*ReadRel_ExtensionTable_); ok { - return x.ExtensionTable + if x != nil { + if x, ok := x.ReadType.(*ReadRel_ExtensionTable_); ok { + return x.ExtensionTable + } + } + return nil +} + +func (x *ReadRel) GetIcebergTable() *ReadRel_IcebergTable { + if x != nil { + if x, ok := x.ReadType.(*ReadRel_IcebergTable_); ok { + return x.IcebergTable + } } return nil } @@ -1446,6 +1521,10 @@ type ReadRel_ExtensionTable_ struct { ExtensionTable *ReadRel_ExtensionTable `protobuf:"bytes,8,opt,name=extension_table,json=extensionTable,proto3,oneof"` } +type ReadRel_IcebergTable_ struct { + IcebergTable *ReadRel_IcebergTable `protobuf:"bytes,9,opt,name=iceberg_table,json=icebergTable,proto3,oneof"` +} + func (*ReadRel_VirtualTable_) isReadRel_ReadType() {} func (*ReadRel_LocalFiles_) isReadRel_ReadType() {} @@ -1454,16 +1533,17 @@ func (*ReadRel_NamedTable_) isReadRel_ReadType() {} func (*ReadRel_ExtensionTable_) isReadRel_ReadType() {} +func (*ReadRel_IcebergTable_) isReadRel_ReadType() {} + // This operator allows to represent calculated expressions of fields (e.g., a+b). Direct/Emit are used to represent classical relational projections type ProjectRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` Expressions []*Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ProjectRel) Reset() { @@ -1526,10 +1606,7 @@ func (x *ProjectRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The binary JOIN relational operator left-join-right, including various join types, a join condition and post_join_filter expression type JoinRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` @@ -1537,6 +1614,8 @@ type JoinRel struct { PostJoinFilter *Expression `protobuf:"bytes,5,opt,name=post_join_filter,json=postJoinFilter,proto3" json:"post_join_filter,omitempty"` Type JoinRel_JoinType `protobuf:"varint,6,opt,name=type,proto3,enum=substrait.JoinRel_JoinType" json:"type,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JoinRel) Reset() { @@ -1620,14 +1699,13 @@ func (x *JoinRel) GetAdvancedExtension() *extensions.AdvancedExtension { // Cartesian product relational operator of two tables (left and right) type CrossRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CrossRel) Reset() { @@ -1690,18 +1768,30 @@ func (x *CrossRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The relational operator representing LIMIT/OFFSET or TOP type semantics. type FetchRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` - // the offset expressed in number of records - Offset int64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - // the amount of records to return - // use -1 to signal that ALL records should be returned - Count int64 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + // Note: A oneof field is inherently optional, whereas individual fields + // within a oneof cannot be marked as optional. The unset state of offset + // should therefore be checked at the oneof level. Unset is treated as 0. + // + // Types that are valid to be assigned to OffsetMode: + // + // *FetchRel_Offset + // *FetchRel_OffsetExpr + OffsetMode isFetchRel_OffsetMode `protobuf_oneof:"offset_mode"` + // Note: A oneof field is inherently optional, whereas individual fields + // within a oneof cannot be marked as optional. The unset state of count + // should therefore be checked at the oneof level. Unset is treated as ALL. + // + // Types that are valid to be assigned to CountMode: + // + // *FetchRel_Count + // *FetchRel_CountExpr + CountMode isFetchRel_CountMode `protobuf_oneof:"count_mode"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FetchRel) Reset() { @@ -1748,20 +1838,58 @@ func (x *FetchRel) GetInput() *Rel { return nil } +func (x *FetchRel) GetOffsetMode() isFetchRel_OffsetMode { + if x != nil { + return x.OffsetMode + } + return nil +} + +// Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *FetchRel) GetOffset() int64 { if x != nil { - return x.Offset + if x, ok := x.OffsetMode.(*FetchRel_Offset); ok { + return x.Offset + } } return 0 } +func (x *FetchRel) GetOffsetExpr() *Expression { + if x != nil { + if x, ok := x.OffsetMode.(*FetchRel_OffsetExpr); ok { + return x.OffsetExpr + } + } + return nil +} + +func (x *FetchRel) GetCountMode() isFetchRel_CountMode { + if x != nil { + return x.CountMode + } + return nil +} + +// Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *FetchRel) GetCount() int64 { if x != nil { - return x.Count + if x, ok := x.CountMode.(*FetchRel_Count); ok { + return x.Count + } } return 0 } +func (x *FetchRel) GetCountExpr() *Expression { + if x != nil { + if x, ok := x.CountMode.(*FetchRel_CountExpr); ok { + return x.CountExpr + } + } + return nil +} + func (x *FetchRel) GetAdvancedExtension() *extensions.AdvancedExtension { if x != nil { return x.AdvancedExtension @@ -1769,13 +1897,60 @@ func (x *FetchRel) GetAdvancedExtension() *extensions.AdvancedExtension { return nil } +type isFetchRel_OffsetMode interface { + isFetchRel_OffsetMode() +} + +type FetchRel_Offset struct { + // the offset expressed in number of records + // Deprecated: use `offset_expr` instead + // + // Deprecated: Marked as deprecated in substrait/algebra.proto. + Offset int64 `protobuf:"varint,3,opt,name=offset,proto3,oneof"` +} + +type FetchRel_OffsetExpr struct { + // Expression evaluated into a non-negative integer specifying the number + // of records to skip. An expression evaluating to null is treated as 0. + // Evaluating to a negative integer should result in an error. + // Recommended type for offset is int64. + OffsetExpr *Expression `protobuf:"bytes,5,opt,name=offset_expr,json=offsetExpr,proto3,oneof"` +} + +func (*FetchRel_Offset) isFetchRel_OffsetMode() {} + +func (*FetchRel_OffsetExpr) isFetchRel_OffsetMode() {} + +type isFetchRel_CountMode interface { + isFetchRel_CountMode() +} + +type FetchRel_Count struct { + // the amount of records to return + // use -1 to signal that ALL records should be returned + // Deprecated: use `count_expr` instead + // + // Deprecated: Marked as deprecated in substrait/algebra.proto. + Count int64 `protobuf:"varint,4,opt,name=count,proto3,oneof"` +} + +type FetchRel_CountExpr struct { + // Expression evaluated into a non-negative integer specifying the number + // of records to return. An expression evaluating to null signals that ALL + // records should be returned. + // Evaluating to a negative integer should result in an error. + // Recommended type for count is int64. + CountExpr *Expression `protobuf:"bytes,6,opt,name=count_expr,json=countExpr,proto3,oneof"` +} + +func (*FetchRel_Count) isFetchRel_CountMode() {} + +func (*FetchRel_CountExpr) isFetchRel_CountMode() {} + // The relational operator representing a GROUP BY Aggregate type AggregateRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` // Input of the aggregation Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` // A list of zero or more grouping sets that the aggregation measures should @@ -1791,6 +1966,8 @@ type AggregateRel struct { // `Grouping.expression_references`. GroupingExpressions []*Expression `protobuf:"bytes,5,rep,name=grouping_expressions,json=groupingExpressions,proto3" json:"grouping_expressions,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AggregateRel) Reset() { @@ -1869,16 +2046,15 @@ func (x *AggregateRel) GetAdvancedExtension() *extensions.AdvancedExtension { // that are related to the current query row. It can be used to execute window functions where // all the windows share the same partitioning and ordering. type ConsistentPartitionWindowRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` WindowFunctions []*ConsistentPartitionWindowRel_WindowRelFunction `protobuf:"bytes,3,rep,name=window_functions,json=windowFunctions,proto3" json:"window_functions,omitempty"` PartitionExpressions []*Expression `protobuf:"bytes,4,rep,name=partition_expressions,json=partitionExpressions,proto3" json:"partition_expressions,omitempty"` Sorts []*SortField `protobuf:"bytes,5,rep,name=sorts,proto3" json:"sorts,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConsistentPartitionWindowRel) Reset() { @@ -1955,14 +2131,13 @@ func (x *ConsistentPartitionWindowRel) GetAdvancedExtension() *extensions.Advanc // The ORDERY BY (or sorting) relational operator. Beside describing a base relation, it includes a list of fields to sort on type SortRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` Sorts []*SortField `protobuf:"bytes,3,rep,name=sorts,proto3" json:"sorts,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SortRel) Reset() { @@ -2025,14 +2200,13 @@ func (x *SortRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The relational operator capturing simple FILTERs (as in the WHERE clause of SQL) type FilterRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` Condition *Expression `protobuf:"bytes,3,opt,name=condition,proto3" json:"condition,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilterRel) Reset() { @@ -2095,16 +2269,15 @@ func (x *FilterRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The relational set operators (intersection/union/etc..) type SetRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` // The first input is the primary input, the remaining are secondary // inputs. There must be at least two inputs. Inputs []*Rel `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` Op SetRel_SetOp `protobuf:"varint,3,opt,name=op,proto3,enum=substrait.SetRel_SetOp" json:"op,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRel) Reset() { @@ -2167,13 +2340,12 @@ func (x *SetRel) GetAdvancedExtension() *extensions.AdvancedExtension { // Stub to support extension with a single input type ExtensionSingleRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + Detail *anypb.Any `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` - Detail *anypb.Any `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtensionSingleRel) Reset() { @@ -2229,12 +2401,11 @@ func (x *ExtensionSingleRel) GetDetail() *anypb.Any { // Stub to support extension with a zero inputs type ExtensionLeafRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Detail *anypb.Any `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Detail *anypb.Any `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtensionLeafRel) Reset() { @@ -2283,13 +2454,12 @@ func (x *ExtensionLeafRel) GetDetail() *anypb.Any { // Stub to support extension with multiple inputs type ExtensionMultiRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Inputs []*Rel `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` + Detail *anypb.Any `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Inputs []*Rel `protobuf:"bytes,2,rep,name=inputs,proto3" json:"inputs,omitempty"` - Detail *anypb.Any `protobuf:"bytes,3,opt,name=detail,proto3" json:"detail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtensionMultiRel) Reset() { @@ -2345,17 +2515,14 @@ func (x *ExtensionMultiRel) GetDetail() *anypb.Any { // A redistribution operation type ExchangeRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` PartitionCount int32 `protobuf:"varint,3,opt,name=partition_count,json=partitionCount,proto3" json:"partition_count,omitempty"` Targets []*ExchangeRel_ExchangeTarget `protobuf:"bytes,4,rep,name=targets,proto3" json:"targets,omitempty"` // the type of exchange used // - // Types that are assignable to ExchangeKind: + // Types that are valid to be assigned to ExchangeKind: // // *ExchangeRel_ScatterByFields // *ExchangeRel_SingleTarget @@ -2364,6 +2531,8 @@ type ExchangeRel struct { // *ExchangeRel_Broadcast_ ExchangeKind isExchangeRel_ExchangeKind `protobuf_oneof:"exchange_kind"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExchangeRel) Reset() { @@ -2424,44 +2593,54 @@ func (x *ExchangeRel) GetTargets() []*ExchangeRel_ExchangeTarget { return nil } -func (m *ExchangeRel) GetExchangeKind() isExchangeRel_ExchangeKind { - if m != nil { - return m.ExchangeKind +func (x *ExchangeRel) GetExchangeKind() isExchangeRel_ExchangeKind { + if x != nil { + return x.ExchangeKind } return nil } func (x *ExchangeRel) GetScatterByFields() *ExchangeRel_ScatterFields { - if x, ok := x.GetExchangeKind().(*ExchangeRel_ScatterByFields); ok { - return x.ScatterByFields + if x != nil { + if x, ok := x.ExchangeKind.(*ExchangeRel_ScatterByFields); ok { + return x.ScatterByFields + } } return nil } func (x *ExchangeRel) GetSingleTarget() *ExchangeRel_SingleBucketExpression { - if x, ok := x.GetExchangeKind().(*ExchangeRel_SingleTarget); ok { - return x.SingleTarget + if x != nil { + if x, ok := x.ExchangeKind.(*ExchangeRel_SingleTarget); ok { + return x.SingleTarget + } } return nil } func (x *ExchangeRel) GetMultiTarget() *ExchangeRel_MultiBucketExpression { - if x, ok := x.GetExchangeKind().(*ExchangeRel_MultiTarget); ok { - return x.MultiTarget + if x != nil { + if x, ok := x.ExchangeKind.(*ExchangeRel_MultiTarget); ok { + return x.MultiTarget + } } return nil } func (x *ExchangeRel) GetRoundRobin() *ExchangeRel_RoundRobin { - if x, ok := x.GetExchangeKind().(*ExchangeRel_RoundRobin_); ok { - return x.RoundRobin + if x != nil { + if x, ok := x.ExchangeKind.(*ExchangeRel_RoundRobin_); ok { + return x.RoundRobin + } } return nil } func (x *ExchangeRel) GetBroadcast() *ExchangeRel_Broadcast { - if x, ok := x.GetExchangeKind().(*ExchangeRel_Broadcast_); ok { - return x.Broadcast + if x != nil { + if x, ok := x.ExchangeKind.(*ExchangeRel_Broadcast_); ok { + return x.Broadcast + } } return nil } @@ -2513,16 +2692,15 @@ func (*ExchangeRel_Broadcast_) isExchangeRel_ExchangeKind() {} // In addition to a field being emitted per input field an extra int64 field is emitted which // contains a zero-indexed ordinal corresponding to the duplicate definition. type ExpandRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Input *Rel `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` // There should be one definition here for each input field. Any fields beyond the provided // definitions will be emitted as is (as if a consistent_field record with an identity // expression was provided). - Fields []*ExpandRel_ExpandField `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []*ExpandRel_ExpandField `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExpandRel) Reset() { @@ -2580,14 +2758,13 @@ func (x *ExpandRel) GetFields() []*ExpandRel_ExpandField { // // This is for use at the root of a `Rel` tree. type RelRoot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A relation Input *Rel `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` // Field names in depth-first order - Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelRoot) Reset() { @@ -2636,11 +2813,8 @@ func (x *RelRoot) GetNames() []string { // A relation (used internally in a plan) type Rel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to RelType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to RelType: // // *Rel_Read // *Rel_Filter @@ -2657,13 +2831,16 @@ type Rel struct { // *Rel_Reference // *Rel_Write // *Rel_Ddl + // *Rel_Update // *Rel_HashJoin // *Rel_MergeJoin // *Rel_NestedLoopJoin // *Rel_Window // *Rel_Exchange // *Rel_Expand - RelType isRel_RelType `protobuf_oneof:"rel_type"` + RelType isRel_RelType `protobuf_oneof:"rel_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Rel) Reset() { @@ -2696,156 +2873,207 @@ func (*Rel) Descriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{17} } -func (m *Rel) GetRelType() isRel_RelType { - if m != nil { - return m.RelType +func (x *Rel) GetRelType() isRel_RelType { + if x != nil { + return x.RelType } return nil } func (x *Rel) GetRead() *ReadRel { - if x, ok := x.GetRelType().(*Rel_Read); ok { - return x.Read + if x != nil { + if x, ok := x.RelType.(*Rel_Read); ok { + return x.Read + } } return nil } func (x *Rel) GetFilter() *FilterRel { - if x, ok := x.GetRelType().(*Rel_Filter); ok { - return x.Filter + if x != nil { + if x, ok := x.RelType.(*Rel_Filter); ok { + return x.Filter + } } return nil } func (x *Rel) GetFetch() *FetchRel { - if x, ok := x.GetRelType().(*Rel_Fetch); ok { - return x.Fetch + if x != nil { + if x, ok := x.RelType.(*Rel_Fetch); ok { + return x.Fetch + } } return nil } func (x *Rel) GetAggregate() *AggregateRel { - if x, ok := x.GetRelType().(*Rel_Aggregate); ok { - return x.Aggregate + if x != nil { + if x, ok := x.RelType.(*Rel_Aggregate); ok { + return x.Aggregate + } } return nil } func (x *Rel) GetSort() *SortRel { - if x, ok := x.GetRelType().(*Rel_Sort); ok { - return x.Sort + if x != nil { + if x, ok := x.RelType.(*Rel_Sort); ok { + return x.Sort + } } return nil } func (x *Rel) GetJoin() *JoinRel { - if x, ok := x.GetRelType().(*Rel_Join); ok { - return x.Join + if x != nil { + if x, ok := x.RelType.(*Rel_Join); ok { + return x.Join + } } return nil } func (x *Rel) GetProject() *ProjectRel { - if x, ok := x.GetRelType().(*Rel_Project); ok { - return x.Project + if x != nil { + if x, ok := x.RelType.(*Rel_Project); ok { + return x.Project + } } return nil } func (x *Rel) GetSet() *SetRel { - if x, ok := x.GetRelType().(*Rel_Set); ok { - return x.Set + if x != nil { + if x, ok := x.RelType.(*Rel_Set); ok { + return x.Set + } } return nil } func (x *Rel) GetExtensionSingle() *ExtensionSingleRel { - if x, ok := x.GetRelType().(*Rel_ExtensionSingle); ok { - return x.ExtensionSingle + if x != nil { + if x, ok := x.RelType.(*Rel_ExtensionSingle); ok { + return x.ExtensionSingle + } } return nil } func (x *Rel) GetExtensionMulti() *ExtensionMultiRel { - if x, ok := x.GetRelType().(*Rel_ExtensionMulti); ok { - return x.ExtensionMulti + if x != nil { + if x, ok := x.RelType.(*Rel_ExtensionMulti); ok { + return x.ExtensionMulti + } } return nil } func (x *Rel) GetExtensionLeaf() *ExtensionLeafRel { - if x, ok := x.GetRelType().(*Rel_ExtensionLeaf); ok { - return x.ExtensionLeaf - } + if x != nil { + if x, ok := x.RelType.(*Rel_ExtensionLeaf); ok { + return x.ExtensionLeaf + } + } return nil } func (x *Rel) GetCross() *CrossRel { - if x, ok := x.GetRelType().(*Rel_Cross); ok { - return x.Cross + if x != nil { + if x, ok := x.RelType.(*Rel_Cross); ok { + return x.Cross + } } return nil } func (x *Rel) GetReference() *ReferenceRel { - if x, ok := x.GetRelType().(*Rel_Reference); ok { - return x.Reference + if x != nil { + if x, ok := x.RelType.(*Rel_Reference); ok { + return x.Reference + } } return nil } func (x *Rel) GetWrite() *WriteRel { - if x, ok := x.GetRelType().(*Rel_Write); ok { - return x.Write + if x != nil { + if x, ok := x.RelType.(*Rel_Write); ok { + return x.Write + } } return nil } func (x *Rel) GetDdl() *DdlRel { - if x, ok := x.GetRelType().(*Rel_Ddl); ok { - return x.Ddl + if x != nil { + if x, ok := x.RelType.(*Rel_Ddl); ok { + return x.Ddl + } + } + return nil +} + +func (x *Rel) GetUpdate() *UpdateRel { + if x != nil { + if x, ok := x.RelType.(*Rel_Update); ok { + return x.Update + } } return nil } func (x *Rel) GetHashJoin() *HashJoinRel { - if x, ok := x.GetRelType().(*Rel_HashJoin); ok { - return x.HashJoin + if x != nil { + if x, ok := x.RelType.(*Rel_HashJoin); ok { + return x.HashJoin + } } return nil } func (x *Rel) GetMergeJoin() *MergeJoinRel { - if x, ok := x.GetRelType().(*Rel_MergeJoin); ok { - return x.MergeJoin + if x != nil { + if x, ok := x.RelType.(*Rel_MergeJoin); ok { + return x.MergeJoin + } } return nil } func (x *Rel) GetNestedLoopJoin() *NestedLoopJoinRel { - if x, ok := x.GetRelType().(*Rel_NestedLoopJoin); ok { - return x.NestedLoopJoin + if x != nil { + if x, ok := x.RelType.(*Rel_NestedLoopJoin); ok { + return x.NestedLoopJoin + } } return nil } func (x *Rel) GetWindow() *ConsistentPartitionWindowRel { - if x, ok := x.GetRelType().(*Rel_Window); ok { - return x.Window + if x != nil { + if x, ok := x.RelType.(*Rel_Window); ok { + return x.Window + } } return nil } func (x *Rel) GetExchange() *ExchangeRel { - if x, ok := x.GetRelType().(*Rel_Exchange); ok { - return x.Exchange + if x != nil { + if x, ok := x.RelType.(*Rel_Exchange); ok { + return x.Exchange + } } return nil } func (x *Rel) GetExpand() *ExpandRel { - if x, ok := x.GetRelType().(*Rel_Expand); ok { - return x.Expand + if x != nil { + if x, ok := x.RelType.(*Rel_Expand); ok { + return x.Expand + } } return nil } @@ -2914,6 +3142,10 @@ type Rel_Ddl struct { Ddl *DdlRel `protobuf:"bytes,20,opt,name=ddl,proto3,oneof"` } +type Rel_Update struct { + Update *UpdateRel `protobuf:"bytes,22,opt,name=update,proto3,oneof"` +} + type Rel_HashJoin struct { // Physical relations HashJoin *HashJoinRel `protobuf:"bytes,13,opt,name=hash_join,json=hashJoin,proto3,oneof"` @@ -2969,6 +3201,8 @@ func (*Rel_Write) isRel_RelType() {} func (*Rel_Ddl) isRel_RelType() {} +func (*Rel_Update) isRel_RelType() {} + func (*Rel_HashJoin) isRel_RelType() {} func (*Rel_MergeJoin) isRel_RelType() {} @@ -2983,14 +3217,13 @@ func (*Rel_Expand) isRel_RelType() {} // A base object for writing (e.g., a table or a view). type NamedObjectWrite struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The list of string is used to represent namespacing (e.g., mydb.mytable). // This assumes shared catalog between systems exchanging a message. Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NamedObjectWrite) Reset() { @@ -3040,11 +3273,10 @@ func (x *NamedObjectWrite) GetAdvancedExtension() *extensions.AdvancedExtension // A stub type that can be used to extend/introduce new table types outside // the specification. type ExtensionObject struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Detail *anypb.Any `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields - - Detail *anypb.Any `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExtensionObject) Reset() { @@ -3085,13 +3317,10 @@ func (x *ExtensionObject) GetDetail() *anypb.Any { } type DdlRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Definition of which type of object we are operating on // - // Types that are assignable to WriteType: + // Types that are valid to be assigned to WriteType: // // *DdlRel_NamedObject // *DdlRel_ExtensionObject @@ -3110,6 +3339,8 @@ type DdlRel struct { // The body of the CREATE VIEW ViewDefinition *Rel `protobuf:"bytes,7,opt,name=view_definition,json=viewDefinition,proto3" json:"view_definition,omitempty"` Common *RelCommon `protobuf:"bytes,8,opt,name=common,proto3" json:"common,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DdlRel) Reset() { @@ -3142,23 +3373,27 @@ func (*DdlRel) Descriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{20} } -func (m *DdlRel) GetWriteType() isDdlRel_WriteType { - if m != nil { - return m.WriteType +func (x *DdlRel) GetWriteType() isDdlRel_WriteType { + if x != nil { + return x.WriteType } return nil } func (x *DdlRel) GetNamedObject() *NamedObjectWrite { - if x, ok := x.GetWriteType().(*DdlRel_NamedObject); ok { - return x.NamedObject + if x != nil { + if x, ok := x.WriteType.(*DdlRel_NamedObject); ok { + return x.NamedObject + } } return nil } func (x *DdlRel) GetExtensionObject() *ExtensionObject { - if x, ok := x.GetWriteType().(*DdlRel_ExtensionObject); ok { - return x.ExtensionObject + if x != nil { + if x, ok := x.WriteType.(*DdlRel_ExtensionObject); ok { + return x.ExtensionObject + } } return nil } @@ -3224,13 +3459,10 @@ func (*DdlRel_ExtensionObject) isDdlRel_WriteType() {} // The operator that modifies the content of a database (operates on 1 table at a time, but record-selection/source can be // based on joining of multiple tables). type WriteRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Definition of which TABLE we are operating on // - // Types that are assignable to WriteType: + // Types that are valid to be assigned to WriteType: // // *WriteRel_NamedTable // *WriteRel_ExtensionTable @@ -3243,10 +3475,13 @@ type WriteRel struct { // the schema must match with table_schema. Default values must be explicitly stated // in a ProjectRel at the top of the input. The match must also // occur in case of DELETE to ensure multi-engine plans are unequivocal. - Input *Rel `protobuf:"bytes,5,opt,name=input,proto3" json:"input,omitempty"` + Input *Rel `protobuf:"bytes,5,opt,name=input,proto3" json:"input,omitempty"` + CreateMode WriteRel_CreateMode `protobuf:"varint,8,opt,name=create_mode,json=createMode,proto3,enum=substrait.WriteRel_CreateMode" json:"create_mode,omitempty"` // Used with CTAS to determine what to do if the table already exists // Output mode determines what is the output of executing this rel - Output WriteRel_OutputMode `protobuf:"varint,6,opt,name=output,proto3,enum=substrait.WriteRel_OutputMode" json:"output,omitempty"` - Common *RelCommon `protobuf:"bytes,7,opt,name=common,proto3" json:"common,omitempty"` + Output WriteRel_OutputMode `protobuf:"varint,6,opt,name=output,proto3,enum=substrait.WriteRel_OutputMode" json:"output,omitempty"` + Common *RelCommon `protobuf:"bytes,7,opt,name=common,proto3" json:"common,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WriteRel) Reset() { @@ -3279,23 +3514,27 @@ func (*WriteRel) Descriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{21} } -func (m *WriteRel) GetWriteType() isWriteRel_WriteType { - if m != nil { - return m.WriteType +func (x *WriteRel) GetWriteType() isWriteRel_WriteType { + if x != nil { + return x.WriteType } return nil } func (x *WriteRel) GetNamedTable() *NamedObjectWrite { - if x, ok := x.GetWriteType().(*WriteRel_NamedTable); ok { - return x.NamedTable + if x != nil { + if x, ok := x.WriteType.(*WriteRel_NamedTable); ok { + return x.NamedTable + } } return nil } func (x *WriteRel) GetExtensionTable() *ExtensionObject { - if x, ok := x.GetWriteType().(*WriteRel_ExtensionTable); ok { - return x.ExtensionTable + if x != nil { + if x, ok := x.WriteType.(*WriteRel_ExtensionTable); ok { + return x.ExtensionTable + } } return nil } @@ -3321,6 +3560,13 @@ func (x *WriteRel) GetInput() *Rel { return nil } +func (x *WriteRel) GetCreateMode() WriteRel_CreateMode { + if x != nil { + return x.CreateMode + } + return WriteRel_CREATE_MODE_UNSPECIFIED +} + func (x *WriteRel) GetOutput() WriteRel_OutputMode { if x != nil { return x.Output @@ -3351,25 +3597,170 @@ func (*WriteRel_NamedTable) isWriteRel_WriteType() {} func (*WriteRel_ExtensionTable) isWriteRel_WriteType() {} +// The operator that modifies the columns of a table +type UpdateRel struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to UpdateType: + // + // *UpdateRel_NamedTable + UpdateType isUpdateRel_UpdateType `protobuf_oneof:"update_type"` + TableSchema *NamedStruct `protobuf:"bytes,2,opt,name=table_schema,json=tableSchema,proto3" json:"table_schema,omitempty"` // The full schema of the named_table + Condition *Expression `protobuf:"bytes,3,opt,name=condition,proto3" json:"condition,omitempty"` // condition to be met for the update to be applied on a record + // The list of transformations to apply to the columns of the named_table + Transformations []*UpdateRel_TransformExpression `protobuf:"bytes,4,rep,name=transformations,proto3" json:"transformations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateRel) Reset() { + *x = UpdateRel{} + mi := &file_substrait_algebra_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateRel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateRel) ProtoMessage() {} + +func (x *UpdateRel) ProtoReflect() protoreflect.Message { + mi := &file_substrait_algebra_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateRel.ProtoReflect.Descriptor instead. +func (*UpdateRel) Descriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{22} +} + +func (x *UpdateRel) GetUpdateType() isUpdateRel_UpdateType { + if x != nil { + return x.UpdateType + } + return nil +} + +func (x *UpdateRel) GetNamedTable() *NamedTable { + if x != nil { + if x, ok := x.UpdateType.(*UpdateRel_NamedTable); ok { + return x.NamedTable + } + } + return nil +} + +func (x *UpdateRel) GetTableSchema() *NamedStruct { + if x != nil { + return x.TableSchema + } + return nil +} + +func (x *UpdateRel) GetCondition() *Expression { + if x != nil { + return x.Condition + } + return nil +} + +func (x *UpdateRel) GetTransformations() []*UpdateRel_TransformExpression { + if x != nil { + return x.Transformations + } + return nil +} + +type isUpdateRel_UpdateType interface { + isUpdateRel_UpdateType() +} + +type UpdateRel_NamedTable struct { + NamedTable *NamedTable `protobuf:"bytes,1,opt,name=named_table,json=namedTable,proto3,oneof"` +} + +func (*UpdateRel_NamedTable) isUpdateRel_UpdateType() {} + +// A base table. The list of string is used to represent namespacing (e.g., mydb.mytable). +// This assumes shared catalog between systems exchanging a message. +type NamedTable struct { + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NamedTable) Reset() { + *x = NamedTable{} + mi := &file_substrait_algebra_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NamedTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedTable) ProtoMessage() {} + +func (x *NamedTable) ProtoReflect() protoreflect.Message { + mi := &file_substrait_algebra_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedTable.ProtoReflect.Descriptor instead. +func (*NamedTable) Descriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{23} +} + +func (x *NamedTable) GetNames() []string { + if x != nil { + return x.Names + } + return nil +} + +func (x *NamedTable) GetAdvancedExtension() *extensions.AdvancedExtension { + if x != nil { + return x.AdvancedExtension + } + return nil +} + // Hash joins and merge joins are a specialization of the general join where the join // expression is an series of comparisons between fields that are ANDed together. The // behavior of this comparison is flexible type ComparisonJoinKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key to compare from the left table Left *Expression_FieldReference `protobuf:"bytes,1,opt,name=left,proto3" json:"left,omitempty"` // The key to compare from the right table Right *Expression_FieldReference `protobuf:"bytes,2,opt,name=right,proto3" json:"right,omitempty"` // Describes how to compare the two keys - Comparison *ComparisonJoinKey_ComparisonType `protobuf:"bytes,3,opt,name=comparison,proto3" json:"comparison,omitempty"` + Comparison *ComparisonJoinKey_ComparisonType `protobuf:"bytes,3,opt,name=comparison,proto3" json:"comparison,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ComparisonJoinKey) Reset() { *x = ComparisonJoinKey{} - mi := &file_substrait_algebra_proto_msgTypes[22] + mi := &file_substrait_algebra_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3381,7 +3772,7 @@ func (x *ComparisonJoinKey) String() string { func (*ComparisonJoinKey) ProtoMessage() {} func (x *ComparisonJoinKey) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[22] + mi := &file_substrait_algebra_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3394,7 +3785,7 @@ func (x *ComparisonJoinKey) ProtoReflect() protoreflect.Message { // Deprecated: Use ComparisonJoinKey.ProtoReflect.Descriptor instead. func (*ComparisonJoinKey) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{22} + return file_substrait_algebra_proto_rawDescGZIP(), []int{24} } func (x *ComparisonJoinKey) GetLeft() *Expression_FieldReference { @@ -3423,13 +3814,10 @@ func (x *ComparisonJoinKey) GetComparison() *ComparisonJoinKey_ComparisonType { // // Two rows are a match if the comparison function returns true for all keys type HashJoinRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` - Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` + Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` // These fields are deprecated in favor of `keys`. If they are set then // the two lists (left_keys and right_keys) must have the same length and // the comparion function is considered to be SimpleEqualityType::EQ @@ -3455,11 +3843,13 @@ type HashJoinRel struct { PostJoinFilter *Expression `protobuf:"bytes,6,opt,name=post_join_filter,json=postJoinFilter,proto3" json:"post_join_filter,omitempty"` Type HashJoinRel_JoinType `protobuf:"varint,7,opt,name=type,proto3,enum=substrait.HashJoinRel_JoinType" json:"type,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HashJoinRel) Reset() { *x = HashJoinRel{} - mi := &file_substrait_algebra_proto_msgTypes[23] + mi := &file_substrait_algebra_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3471,7 +3861,7 @@ func (x *HashJoinRel) String() string { func (*HashJoinRel) ProtoMessage() {} func (x *HashJoinRel) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[23] + mi := &file_substrait_algebra_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3484,7 +3874,7 @@ func (x *HashJoinRel) ProtoReflect() protoreflect.Message { // Deprecated: Use HashJoinRel.ProtoReflect.Descriptor instead. func (*HashJoinRel) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{23} + return file_substrait_algebra_proto_rawDescGZIP(), []int{25} } func (x *HashJoinRel) GetCommon() *RelCommon { @@ -3555,13 +3945,10 @@ func (x *HashJoinRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The merge equijoin does a join by taking advantage of two sets that are sorted on the join keys. // This allows the join operation to be done in a streaming fashion. type MergeJoinRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` - Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` + Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` // These fields are deprecated in favor of `keys`. If they are set then // the two lists (left_keys and right_keys) must have the same length and // the comparion function is considered to be SimpleEqualityType::EQ @@ -3589,11 +3976,13 @@ type MergeJoinRel struct { PostJoinFilter *Expression `protobuf:"bytes,6,opt,name=post_join_filter,json=postJoinFilter,proto3" json:"post_join_filter,omitempty"` Type MergeJoinRel_JoinType `protobuf:"varint,7,opt,name=type,proto3,enum=substrait.MergeJoinRel_JoinType" json:"type,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MergeJoinRel) Reset() { *x = MergeJoinRel{} - mi := &file_substrait_algebra_proto_msgTypes[24] + mi := &file_substrait_algebra_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3605,7 +3994,7 @@ func (x *MergeJoinRel) String() string { func (*MergeJoinRel) ProtoMessage() {} func (x *MergeJoinRel) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[24] + mi := &file_substrait_algebra_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3618,7 +4007,7 @@ func (x *MergeJoinRel) ProtoReflect() protoreflect.Message { // Deprecated: Use MergeJoinRel.ProtoReflect.Descriptor instead. func (*MergeJoinRel) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{24} + return file_substrait_algebra_proto_rawDescGZIP(), []int{26} } func (x *MergeJoinRel) GetCommon() *RelCommon { @@ -3689,22 +4078,21 @@ func (x *MergeJoinRel) GetAdvancedExtension() *extensions.AdvancedExtension { // The nested loop join (NLJ) operator will hold the entire right input and iterate over it using the // left input, evaluating the join expression on the Cartesian product of all rows. type NestedLoopJoinRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` - Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` - Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Common *RelCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + Left *Rel `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"` + Right *Rel `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"` // optional, defaults to true (a cartesian join) Expression *Expression `protobuf:"bytes,4,opt,name=expression,proto3" json:"expression,omitempty"` Type NestedLoopJoinRel_JoinType `protobuf:"varint,5,opt,name=type,proto3,enum=substrait.NestedLoopJoinRel_JoinType" json:"type,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NestedLoopJoinRel) Reset() { *x = NestedLoopJoinRel{} - mi := &file_substrait_algebra_proto_msgTypes[25] + mi := &file_substrait_algebra_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3716,7 +4104,7 @@ func (x *NestedLoopJoinRel) String() string { func (*NestedLoopJoinRel) ProtoMessage() {} func (x *NestedLoopJoinRel) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[25] + mi := &file_substrait_algebra_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3729,7 +4117,7 @@ func (x *NestedLoopJoinRel) ProtoReflect() protoreflect.Message { // Deprecated: Use NestedLoopJoinRel.ProtoReflect.Descriptor instead. func (*NestedLoopJoinRel) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{25} + return file_substrait_algebra_proto_rawDescGZIP(), []int{27} } func (x *NestedLoopJoinRel) GetCommon() *RelCommon { @@ -3776,21 +4164,20 @@ func (x *NestedLoopJoinRel) GetAdvancedExtension() *extensions.AdvancedExtension // The argument of a function type FunctionArgument struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ArgType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ArgType: // // *FunctionArgument_Enum // *FunctionArgument_Type // *FunctionArgument_Value - ArgType isFunctionArgument_ArgType `protobuf_oneof:"arg_type"` + ArgType isFunctionArgument_ArgType `protobuf_oneof:"arg_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionArgument) Reset() { *x = FunctionArgument{} - mi := &file_substrait_algebra_proto_msgTypes[26] + mi := &file_substrait_algebra_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3802,7 +4189,7 @@ func (x *FunctionArgument) String() string { func (*FunctionArgument) ProtoMessage() {} func (x *FunctionArgument) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[26] + mi := &file_substrait_algebra_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3815,33 +4202,39 @@ func (x *FunctionArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use FunctionArgument.ProtoReflect.Descriptor instead. func (*FunctionArgument) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{26} + return file_substrait_algebra_proto_rawDescGZIP(), []int{28} } -func (m *FunctionArgument) GetArgType() isFunctionArgument_ArgType { - if m != nil { - return m.ArgType +func (x *FunctionArgument) GetArgType() isFunctionArgument_ArgType { + if x != nil { + return x.ArgType } return nil } func (x *FunctionArgument) GetEnum() string { - if x, ok := x.GetArgType().(*FunctionArgument_Enum); ok { - return x.Enum + if x != nil { + if x, ok := x.ArgType.(*FunctionArgument_Enum); ok { + return x.Enum + } } return "" } func (x *FunctionArgument) GetType() *Type { - if x, ok := x.GetArgType().(*FunctionArgument_Type); ok { - return x.Type + if x != nil { + if x, ok := x.ArgType.(*FunctionArgument_Type); ok { + return x.Type + } } return nil } func (x *FunctionArgument) GetValue() *Expression { - if x, ok := x.GetArgType().(*FunctionArgument_Value); ok { - return x.Value + if x != nil { + if x, ok := x.ArgType.(*FunctionArgument_Value); ok { + return x.Value + } } return nil } @@ -3871,10 +4264,7 @@ func (*FunctionArgument_Value) isFunctionArgument_ArgType() {} // An optional function argument. Typically used for specifying behavior in // invalid or corner cases. type FunctionOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the option to set. If the consumer does not recognize the // option, it must reject the plan. The name is matched case-insensitively // with option names defined for the function. @@ -3885,12 +4275,14 @@ type FunctionOption struct { // supports. If the consumer supports none of the specified options, it // must reject the plan. The name is matched case-insensitively and must // match one of the option values defined for the option. - Preference []string `protobuf:"bytes,2,rep,name=preference,proto3" json:"preference,omitempty"` + Preference []string `protobuf:"bytes,2,rep,name=preference,proto3" json:"preference,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionOption) Reset() { *x = FunctionOption{} - mi := &file_substrait_algebra_proto_msgTypes[27] + mi := &file_substrait_algebra_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3902,7 +4294,7 @@ func (x *FunctionOption) String() string { func (*FunctionOption) ProtoMessage() {} func (x *FunctionOption) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[27] + mi := &file_substrait_algebra_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3915,7 +4307,7 @@ func (x *FunctionOption) ProtoReflect() protoreflect.Message { // Deprecated: Use FunctionOption.ProtoReflect.Descriptor instead. func (*FunctionOption) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{27} + return file_substrait_algebra_proto_rawDescGZIP(), []int{29} } func (x *FunctionOption) GetName() string { @@ -3933,11 +4325,8 @@ func (x *FunctionOption) GetPreference() []string { } type Expression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to RexType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to RexType: // // *Expression_Literal_ // *Expression_Selection @@ -3951,12 +4340,14 @@ type Expression struct { // *Expression_Subquery_ // *Expression_Nested_ // *Expression_Enum_ - RexType isExpression_RexType `protobuf_oneof:"rex_type"` + RexType isExpression_RexType `protobuf_oneof:"rex_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression) Reset() { *x = Expression{} - mi := &file_substrait_algebra_proto_msgTypes[28] + mi := &file_substrait_algebra_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3968,7 +4359,7 @@ func (x *Expression) String() string { func (*Expression) ProtoMessage() {} func (x *Expression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[28] + mi := &file_substrait_algebra_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,97 +4372,121 @@ func (x *Expression) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression.ProtoReflect.Descriptor instead. func (*Expression) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30} } -func (m *Expression) GetRexType() isExpression_RexType { - if m != nil { - return m.RexType +func (x *Expression) GetRexType() isExpression_RexType { + if x != nil { + return x.RexType } return nil } func (x *Expression) GetLiteral() *Expression_Literal { - if x, ok := x.GetRexType().(*Expression_Literal_); ok { - return x.Literal + if x != nil { + if x, ok := x.RexType.(*Expression_Literal_); ok { + return x.Literal + } } return nil } func (x *Expression) GetSelection() *Expression_FieldReference { - if x, ok := x.GetRexType().(*Expression_Selection); ok { - return x.Selection + if x != nil { + if x, ok := x.RexType.(*Expression_Selection); ok { + return x.Selection + } } return nil } func (x *Expression) GetScalarFunction() *Expression_ScalarFunction { - if x, ok := x.GetRexType().(*Expression_ScalarFunction_); ok { - return x.ScalarFunction + if x != nil { + if x, ok := x.RexType.(*Expression_ScalarFunction_); ok { + return x.ScalarFunction + } } return nil } func (x *Expression) GetWindowFunction() *Expression_WindowFunction { - if x, ok := x.GetRexType().(*Expression_WindowFunction_); ok { - return x.WindowFunction + if x != nil { + if x, ok := x.RexType.(*Expression_WindowFunction_); ok { + return x.WindowFunction + } } return nil } func (x *Expression) GetIfThen() *Expression_IfThen { - if x, ok := x.GetRexType().(*Expression_IfThen_); ok { - return x.IfThen + if x != nil { + if x, ok := x.RexType.(*Expression_IfThen_); ok { + return x.IfThen + } } return nil } func (x *Expression) GetSwitchExpression() *Expression_SwitchExpression { - if x, ok := x.GetRexType().(*Expression_SwitchExpression_); ok { - return x.SwitchExpression + if x != nil { + if x, ok := x.RexType.(*Expression_SwitchExpression_); ok { + return x.SwitchExpression + } } return nil } func (x *Expression) GetSingularOrList() *Expression_SingularOrList { - if x, ok := x.GetRexType().(*Expression_SingularOrList_); ok { - return x.SingularOrList + if x != nil { + if x, ok := x.RexType.(*Expression_SingularOrList_); ok { + return x.SingularOrList + } } return nil } func (x *Expression) GetMultiOrList() *Expression_MultiOrList { - if x, ok := x.GetRexType().(*Expression_MultiOrList_); ok { - return x.MultiOrList + if x != nil { + if x, ok := x.RexType.(*Expression_MultiOrList_); ok { + return x.MultiOrList + } } return nil } func (x *Expression) GetCast() *Expression_Cast { - if x, ok := x.GetRexType().(*Expression_Cast_); ok { - return x.Cast + if x != nil { + if x, ok := x.RexType.(*Expression_Cast_); ok { + return x.Cast + } } return nil } func (x *Expression) GetSubquery() *Expression_Subquery { - if x, ok := x.GetRexType().(*Expression_Subquery_); ok { - return x.Subquery + if x != nil { + if x, ok := x.RexType.(*Expression_Subquery_); ok { + return x.Subquery + } } return nil } func (x *Expression) GetNested() *Expression_Nested { - if x, ok := x.GetRexType().(*Expression_Nested_); ok { - return x.Nested + if x != nil { + if x, ok := x.RexType.(*Expression_Nested_); ok { + return x.Nested + } } return nil } // Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *Expression) GetEnum() *Expression_Enum { - if x, ok := x.GetRexType().(*Expression_Enum_); ok { - return x.Enum + if x != nil { + if x, ok := x.RexType.(*Expression_Enum_); ok { + return x.Enum + } } return nil } @@ -4159,21 +4574,20 @@ func (*Expression_Enum_) isExpression_RexType() {} // The description of a field to sort on (including the direction of sorting and null semantics) type SortField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Expr *Expression `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` - // Types that are assignable to SortKind: + state protoimpl.MessageState `protogen:"open.v1"` + Expr *Expression `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` + // Types that are valid to be assigned to SortKind: // // *SortField_Direction // *SortField_ComparisonFunctionReference - SortKind isSortField_SortKind `protobuf_oneof:"sort_kind"` + SortKind isSortField_SortKind `protobuf_oneof:"sort_kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SortField) Reset() { *x = SortField{} - mi := &file_substrait_algebra_proto_msgTypes[29] + mi := &file_substrait_algebra_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4185,7 +4599,7 @@ func (x *SortField) String() string { func (*SortField) ProtoMessage() {} func (x *SortField) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[29] + mi := &file_substrait_algebra_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4198,7 +4612,7 @@ func (x *SortField) ProtoReflect() protoreflect.Message { // Deprecated: Use SortField.ProtoReflect.Descriptor instead. func (*SortField) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{29} + return file_substrait_algebra_proto_rawDescGZIP(), []int{31} } func (x *SortField) GetExpr() *Expression { @@ -4208,23 +4622,27 @@ func (x *SortField) GetExpr() *Expression { return nil } -func (m *SortField) GetSortKind() isSortField_SortKind { - if m != nil { - return m.SortKind +func (x *SortField) GetSortKind() isSortField_SortKind { + if x != nil { + return x.SortKind } return nil } func (x *SortField) GetDirection() SortField_SortDirection { - if x, ok := x.GetSortKind().(*SortField_Direction); ok { - return x.Direction + if x != nil { + if x, ok := x.SortKind.(*SortField_Direction); ok { + return x.Direction + } } return SortField_SORT_DIRECTION_UNSPECIFIED } func (x *SortField) GetComparisonFunctionReference() uint32 { - if x, ok := x.GetSortKind().(*SortField_ComparisonFunctionReference); ok { - return x.ComparisonFunctionReference + if x != nil { + if x, ok := x.SortKind.(*SortField_ComparisonFunctionReference); ok { + return x.ComparisonFunctionReference + } } return 0 } @@ -4247,10 +4665,7 @@ func (*SortField_ComparisonFunctionReference) isSortField_SortKind() {} // An aggregate function. type AggregateFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Points to a function_anchor defined in this plan, which must refer // to an aggregate function in the associated YAML file. Required; 0 is // considered to be a valid anchor/reference. @@ -4293,12 +4708,14 @@ type AggregateFunction struct { // deprecated; use arguments instead // // Deprecated: Marked as deprecated in substrait/algebra.proto. - Args []*Expression `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Args []*Expression `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AggregateFunction) Reset() { *x = AggregateFunction{} - mi := &file_substrait_algebra_proto_msgTypes[30] + mi := &file_substrait_algebra_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4310,7 +4727,7 @@ func (x *AggregateFunction) String() string { func (*AggregateFunction) ProtoMessage() {} func (x *AggregateFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[30] + mi := &file_substrait_algebra_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4323,7 +4740,7 @@ func (x *AggregateFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use AggregateFunction.ProtoReflect.Descriptor instead. func (*AggregateFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{30} + return file_substrait_algebra_proto_rawDescGZIP(), []int{32} } func (x *AggregateFunction) GetFunctionReference() uint32 { @@ -4386,16 +4803,15 @@ func (x *AggregateFunction) GetArgs() []*Expression { // This rel is used to create references, // in case we refer to a RelRoot field names will be ignored type ReferenceRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SubtreeOrdinal int32 `protobuf:"varint,1,opt,name=subtree_ordinal,json=subtreeOrdinal,proto3" json:"subtree_ordinal,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SubtreeOrdinal int32 `protobuf:"varint,1,opt,name=subtree_ordinal,json=subtreeOrdinal,proto3" json:"subtree_ordinal,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReferenceRel) Reset() { *x = ReferenceRel{} - mi := &file_substrait_algebra_proto_msgTypes[31] + mi := &file_substrait_algebra_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4407,7 +4823,7 @@ func (x *ReferenceRel) String() string { func (*ReferenceRel) ProtoMessage() {} func (x *ReferenceRel) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[31] + mi := &file_substrait_algebra_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4420,7 +4836,7 @@ func (x *ReferenceRel) ProtoReflect() protoreflect.Message { // Deprecated: Use ReferenceRel.ProtoReflect.Descriptor instead. func (*ReferenceRel) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{31} + return file_substrait_algebra_proto_rawDescGZIP(), []int{33} } func (x *ReferenceRel) GetSubtreeOrdinal() int32 { @@ -4432,14 +4848,14 @@ func (x *ReferenceRel) GetSubtreeOrdinal() int32 { // Direct indicates no change on presence and ordering of fields in the output type RelCommon_Direct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Direct) Reset() { *x = RelCommon_Direct{} - mi := &file_substrait_algebra_proto_msgTypes[32] + mi := &file_substrait_algebra_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4451,7 +4867,7 @@ func (x *RelCommon_Direct) String() string { func (*RelCommon_Direct) ProtoMessage() {} func (x *RelCommon_Direct) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[32] + mi := &file_substrait_algebra_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4469,16 +4885,15 @@ func (*RelCommon_Direct) Descriptor() ([]byte, []int) { // Remap which fields are output and in which order type RelCommon_Emit struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + OutputMapping []int32 `protobuf:"varint,1,rep,packed,name=output_mapping,json=outputMapping,proto3" json:"output_mapping,omitempty"` unknownFields protoimpl.UnknownFields - - OutputMapping []int32 `protobuf:"varint,1,rep,packed,name=output_mapping,json=outputMapping,proto3" json:"output_mapping,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RelCommon_Emit) Reset() { *x = RelCommon_Emit{} - mi := &file_substrait_algebra_proto_msgTypes[33] + mi := &file_substrait_algebra_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4490,7 +4905,7 @@ func (x *RelCommon_Emit) String() string { func (*RelCommon_Emit) ProtoMessage() {} func (x *RelCommon_Emit) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[33] + mi := &file_substrait_algebra_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4516,10 +4931,7 @@ func (x *RelCommon_Emit) GetOutputMapping() []int32 { // Changes to the operation that can influence efficiency/performance but // should not impact correctness. type RelCommon_Hint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Stats *RelCommon_Hint_Stats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` Constraint *RelCommon_Hint_RuntimeConstraint `protobuf:"bytes,2,opt,name=constraint,proto3" json:"constraint,omitempty"` // Name (alias) for this relation. Can be used for e.g. qualifying the relation (see e.g. @@ -4534,11 +4946,13 @@ type RelCommon_Hint struct { // and number refer to the current relation. SavedComputations []*RelCommon_Hint_SavedComputation `protobuf:"bytes,11,rep,name=saved_computations,json=savedComputations,proto3" json:"saved_computations,omitempty"` LoadedComputations []*RelCommon_Hint_LoadedComputation `protobuf:"bytes,12,rep,name=loaded_computations,json=loadedComputations,proto3" json:"loaded_computations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Hint) Reset() { *x = RelCommon_Hint{} - mi := &file_substrait_algebra_proto_msgTypes[34] + mi := &file_substrait_algebra_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4550,7 +4964,7 @@ func (x *RelCommon_Hint) String() string { func (*RelCommon_Hint) ProtoMessage() {} func (x *RelCommon_Hint) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[34] + mi := &file_substrait_algebra_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4617,18 +5031,17 @@ func (x *RelCommon_Hint) GetLoadedComputations() []*RelCommon_Hint_LoadedComputa // The statistics related to a hint (physical properties of records) type RelCommon_Hint_Stats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` RowCount float64 `protobuf:"fixed64,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` RecordSize float64 `protobuf:"fixed64,2,opt,name=record_size,json=recordSize,proto3" json:"record_size,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Hint_Stats) Reset() { *x = RelCommon_Hint_Stats{} - mi := &file_substrait_algebra_proto_msgTypes[35] + mi := &file_substrait_algebra_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4640,7 +5053,7 @@ func (x *RelCommon_Hint_Stats) String() string { func (*RelCommon_Hint_Stats) ProtoMessage() {} func (x *RelCommon_Hint_Stats) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[35] + mi := &file_substrait_algebra_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4678,16 +5091,15 @@ func (x *RelCommon_Hint_Stats) GetAdvancedExtension() *extensions.AdvancedExtens } type RelCommon_Hint_RuntimeConstraint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Hint_RuntimeConstraint) Reset() { *x = RelCommon_Hint_RuntimeConstraint{} - mi := &file_substrait_algebra_proto_msgTypes[36] + mi := &file_substrait_algebra_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4699,7 +5111,7 @@ func (x *RelCommon_Hint_RuntimeConstraint) String() string { func (*RelCommon_Hint_RuntimeConstraint) ProtoMessage() {} func (x *RelCommon_Hint_RuntimeConstraint) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[36] + mi := &file_substrait_algebra_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4723,10 +5135,7 @@ func (x *RelCommon_Hint_RuntimeConstraint) GetAdvancedExtension() *extensions.Ad } type RelCommon_Hint_SavedComputation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value corresponds to a plan unique number for that datastructure. Any particular // computation may be saved only once but it may be loaded multiple times. ComputationId int32 `protobuf:"varint,1,opt,name=computation_id,json=computationId,proto3" json:"computation_id,omitempty"` @@ -4735,12 +5144,14 @@ type RelCommon_Hint_SavedComputation struct { // is more portable. The consumer should be able to decide if an unknown type here // matches the same unknown type at a different plan and ignore the optimization if they // are mismatched. - Type RelCommon_Hint_ComputationType `protobuf:"varint,2,opt,name=type,proto3,enum=substrait.RelCommon_Hint_ComputationType" json:"type,omitempty"` + Type RelCommon_Hint_ComputationType `protobuf:"varint,2,opt,name=type,proto3,enum=substrait.RelCommon_Hint_ComputationType" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Hint_SavedComputation) Reset() { *x = RelCommon_Hint_SavedComputation{} - mi := &file_substrait_algebra_proto_msgTypes[37] + mi := &file_substrait_algebra_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4752,7 +5163,7 @@ func (x *RelCommon_Hint_SavedComputation) String() string { func (*RelCommon_Hint_SavedComputation) ProtoMessage() {} func (x *RelCommon_Hint_SavedComputation) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[37] + mi := &file_substrait_algebra_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4783,10 +5194,7 @@ func (x *RelCommon_Hint_SavedComputation) GetType() RelCommon_Hint_ComputationTy } type RelCommon_Hint_LoadedComputation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The value corresponds to a plan unique number for that datastructure. Any particular // computation may be saved only once but it may be loaded multiple times. ComputationIdReference int32 `protobuf:"varint,1,opt,name=computation_id_reference,json=computationIdReference,proto3" json:"computation_id_reference,omitempty"` @@ -4795,12 +5203,14 @@ type RelCommon_Hint_LoadedComputation struct { // is more portable. The consumer should be able to decide if an unknown type here // matches the same unknown type at a different plan and ignore the optimization if they // are mismatched. - Type RelCommon_Hint_ComputationType `protobuf:"varint,2,opt,name=type,proto3,enum=substrait.RelCommon_Hint_ComputationType" json:"type,omitempty"` + Type RelCommon_Hint_ComputationType `protobuf:"varint,2,opt,name=type,proto3,enum=substrait.RelCommon_Hint_ComputationType" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RelCommon_Hint_LoadedComputation) Reset() { *x = RelCommon_Hint_LoadedComputation{} - mi := &file_substrait_algebra_proto_msgTypes[38] + mi := &file_substrait_algebra_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4812,7 +5222,7 @@ func (x *RelCommon_Hint_LoadedComputation) String() string { func (*RelCommon_Hint_LoadedComputation) ProtoMessage() {} func (x *RelCommon_Hint_LoadedComputation) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[38] + mi := &file_substrait_algebra_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4845,17 +5255,16 @@ func (x *RelCommon_Hint_LoadedComputation) GetType() RelCommon_Hint_ComputationT // A base table. The list of string is used to represent namespacing (e.g., mydb.mytable). // This assumes shared catalog between systems exchanging a message. type ReadRel_NamedTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_NamedTable) Reset() { *x = ReadRel_NamedTable{} - mi := &file_substrait_algebra_proto_msgTypes[39] + mi := &file_substrait_algebra_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4867,7 +5276,7 @@ func (x *ReadRel_NamedTable) String() string { func (*ReadRel_NamedTable) ProtoMessage() {} func (x *ReadRel_NamedTable) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[39] + mi := &file_substrait_algebra_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4897,20 +5306,86 @@ func (x *ReadRel_NamedTable) GetAdvancedExtension() *extensions.AdvancedExtensio return nil } -// A table composed of expressions. -type ReadRel_VirtualTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +// Read an Iceberg Table +type ReadRel_IcebergTable struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to TableType: + // + // *ReadRel_IcebergTable_Direct + TableType isReadRel_IcebergTable_TableType `protobuf_oneof:"table_type"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadRel_IcebergTable) Reset() { + *x = ReadRel_IcebergTable{} + mi := &file_substrait_algebra_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadRel_IcebergTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadRel_IcebergTable) ProtoMessage() {} + +func (x *ReadRel_IcebergTable) ProtoReflect() protoreflect.Message { + mi := &file_substrait_algebra_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadRel_IcebergTable.ProtoReflect.Descriptor instead. +func (*ReadRel_IcebergTable) Descriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *ReadRel_IcebergTable) GetTableType() isReadRel_IcebergTable_TableType { + if x != nil { + return x.TableType + } + return nil +} + +func (x *ReadRel_IcebergTable) GetDirect() *ReadRel_IcebergTable_MetadataFileRead { + if x != nil { + if x, ok := x.TableType.(*ReadRel_IcebergTable_Direct); ok { + return x.Direct + } + } + return nil +} + +type isReadRel_IcebergTable_TableType interface { + isReadRel_IcebergTable_TableType() +} + +type ReadRel_IcebergTable_Direct struct { + Direct *ReadRel_IcebergTable_MetadataFileRead `protobuf:"bytes,1,opt,name=direct,proto3,oneof"` // future: add catalog table types (e.g. rest api, latest metadata in path, etc) +} + +func (*ReadRel_IcebergTable_Direct) isReadRel_IcebergTable_TableType() {} +// A table composed of expressions. +type ReadRel_VirtualTable struct { + state protoimpl.MessageState `protogen:"open.v1"` // Deprecated: Marked as deprecated in substrait/algebra.proto. - Values []*Expression_Literal_Struct `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` - Expressions []*Expression_Nested_Struct `protobuf:"bytes,2,rep,name=expressions,proto3" json:"expressions,omitempty"` + Values []*Expression_Literal_Struct `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + Expressions []*Expression_Nested_Struct `protobuf:"bytes,2,rep,name=expressions,proto3" json:"expressions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_VirtualTable) Reset() { *x = ReadRel_VirtualTable{} - mi := &file_substrait_algebra_proto_msgTypes[40] + mi := &file_substrait_algebra_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4922,7 +5397,7 @@ func (x *ReadRel_VirtualTable) String() string { func (*ReadRel_VirtualTable) ProtoMessage() {} func (x *ReadRel_VirtualTable) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[40] + mi := &file_substrait_algebra_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4935,7 +5410,7 @@ func (x *ReadRel_VirtualTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadRel_VirtualTable.ProtoReflect.Descriptor instead. func (*ReadRel_VirtualTable) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 2} } // Deprecated: Marked as deprecated in substrait/algebra.proto. @@ -4956,16 +5431,15 @@ func (x *ReadRel_VirtualTable) GetExpressions() []*Expression_Nested_Struct { // A stub type that can be used to extend/introduce new table types outside // the specification. type ReadRel_ExtensionTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Detail *anypb.Any `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` unknownFields protoimpl.UnknownFields - - Detail *anypb.Any `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadRel_ExtensionTable) Reset() { *x = ReadRel_ExtensionTable{} - mi := &file_substrait_algebra_proto_msgTypes[41] + mi := &file_substrait_algebra_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4977,7 +5451,7 @@ func (x *ReadRel_ExtensionTable) String() string { func (*ReadRel_ExtensionTable) ProtoMessage() {} func (x *ReadRel_ExtensionTable) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[41] + mi := &file_substrait_algebra_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4990,7 +5464,7 @@ func (x *ReadRel_ExtensionTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadRel_ExtensionTable.ProtoReflect.Descriptor instead. func (*ReadRel_ExtensionTable) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3} } func (x *ReadRel_ExtensionTable) GetDetail() *anypb.Any { @@ -5002,17 +5476,16 @@ func (x *ReadRel_ExtensionTable) GetDetail() *anypb.Any { // Represents a list of files in input of a scan operation type ReadRel_LocalFiles struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Items []*ReadRel_LocalFiles_FileOrFiles `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` AdvancedExtension *extensions.AdvancedExtension `protobuf:"bytes,10,opt,name=advanced_extension,json=advancedExtension,proto3" json:"advanced_extension,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles) Reset() { *x = ReadRel_LocalFiles{} - mi := &file_substrait_algebra_proto_msgTypes[42] + mi := &file_substrait_algebra_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5024,7 +5497,7 @@ func (x *ReadRel_LocalFiles) String() string { func (*ReadRel_LocalFiles) ProtoMessage() {} func (x *ReadRel_LocalFiles) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[42] + mi := &file_substrait_algebra_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5037,7 +5510,7 @@ func (x *ReadRel_LocalFiles) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadRel_LocalFiles.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4} } func (x *ReadRel_LocalFiles) GetItems() []*ReadRel_LocalFiles_FileOrFiles { @@ -5054,17 +5527,112 @@ func (x *ReadRel_LocalFiles) GetAdvancedExtension() *extensions.AdvancedExtensio return nil } +// Read an Iceberg table using a metadata file. Implicit assumption: required credentials are already known by plan consumer. +type ReadRel_IcebergTable_MetadataFileRead struct { + state protoimpl.MessageState `protogen:"open.v1"` + // the specific uri of a metadata file (e.g. s3://mybucket/mytable/-.metadata.json) + MetadataUri string `protobuf:"bytes,1,opt,name=metadata_uri,json=metadataUri,proto3" json:"metadata_uri,omitempty"` + // snapshot options. if none set, uses the current snapshot listed in the metadata file + // + // Types that are valid to be assigned to Snapshot: + // + // *ReadRel_IcebergTable_MetadataFileRead_SnapshotId + // *ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp + Snapshot isReadRel_IcebergTable_MetadataFileRead_Snapshot `protobuf_oneof:"snapshot"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) Reset() { + *x = ReadRel_IcebergTable_MetadataFileRead{} + mi := &file_substrait_algebra_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadRel_IcebergTable_MetadataFileRead) ProtoMessage() {} + +func (x *ReadRel_IcebergTable_MetadataFileRead) ProtoReflect() protoreflect.Message { + mi := &file_substrait_algebra_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadRel_IcebergTable_MetadataFileRead.ProtoReflect.Descriptor instead. +func (*ReadRel_IcebergTable_MetadataFileRead) Descriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 1, 0} +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) GetMetadataUri() string { + if x != nil { + return x.MetadataUri + } + return "" +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) GetSnapshot() isReadRel_IcebergTable_MetadataFileRead_Snapshot { + if x != nil { + return x.Snapshot + } + return nil +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) GetSnapshotId() string { + if x != nil { + if x, ok := x.Snapshot.(*ReadRel_IcebergTable_MetadataFileRead_SnapshotId); ok { + return x.SnapshotId + } + } + return "" +} + +func (x *ReadRel_IcebergTable_MetadataFileRead) GetSnapshotTimestamp() int64 { + if x != nil { + if x, ok := x.Snapshot.(*ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp); ok { + return x.SnapshotTimestamp + } + } + return 0 +} + +type isReadRel_IcebergTable_MetadataFileRead_Snapshot interface { + isReadRel_IcebergTable_MetadataFileRead_Snapshot() +} + +type ReadRel_IcebergTable_MetadataFileRead_SnapshotId struct { + // the snapshot id to read. + SnapshotId string `protobuf:"bytes,2,opt,name=snapshot_id,json=snapshotId,proto3,oneof"` +} + +type ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp struct { + // the timestamp that should be used to select the snapshot (Time passed in microseconds since 1970-01-01 00:00:00.000000 in UTC) + SnapshotTimestamp int64 `protobuf:"varint,3,opt,name=snapshot_timestamp,json=snapshotTimestamp,proto3,oneof"` +} + +func (*ReadRel_IcebergTable_MetadataFileRead_SnapshotId) isReadRel_IcebergTable_MetadataFileRead_Snapshot() { +} + +func (*ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp) isReadRel_IcebergTable_MetadataFileRead_Snapshot() { +} + // Many files consist of indivisible chunks (e.g. parquet row groups // or CSV rows). If a slice partially selects an indivisible chunk // then the consumer should employ some rule to decide which slice to // include the chunk in (e.g. include it in the slice that contains // the midpoint of the chunk) type ReadRel_LocalFiles_FileOrFiles struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to PathType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to PathType: // // *ReadRel_LocalFiles_FileOrFiles_UriPath // *ReadRel_LocalFiles_FileOrFiles_UriPathGlob @@ -5079,7 +5647,7 @@ type ReadRel_LocalFiles_FileOrFiles struct { Length uint64 `protobuf:"varint,8,opt,name=length,proto3" json:"length,omitempty"` // The format of the files along with options for reading those files. // - // Types that are assignable to FileFormat: + // Types that are valid to be assigned to FileFormat: // // *ReadRel_LocalFiles_FileOrFiles_Parquet // *ReadRel_LocalFiles_FileOrFiles_Arrow @@ -5087,12 +5655,14 @@ type ReadRel_LocalFiles_FileOrFiles struct { // *ReadRel_LocalFiles_FileOrFiles_Extension // *ReadRel_LocalFiles_FileOrFiles_Dwrf // *ReadRel_LocalFiles_FileOrFiles_Text - FileFormat isReadRel_LocalFiles_FileOrFiles_FileFormat `protobuf_oneof:"file_format"` + FileFormat isReadRel_LocalFiles_FileOrFiles_FileFormat `protobuf_oneof:"file_format"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles) Reset() { *x = ReadRel_LocalFiles_FileOrFiles{} - mi := &file_substrait_algebra_proto_msgTypes[43] + mi := &file_substrait_algebra_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5104,7 +5674,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles) String() string { func (*ReadRel_LocalFiles_FileOrFiles) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[43] + mi := &file_substrait_algebra_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5117,40 +5687,48 @@ func (x *ReadRel_LocalFiles_FileOrFiles) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadRel_LocalFiles_FileOrFiles.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0} } -func (m *ReadRel_LocalFiles_FileOrFiles) GetPathType() isReadRel_LocalFiles_FileOrFiles_PathType { - if m != nil { - return m.PathType +func (x *ReadRel_LocalFiles_FileOrFiles) GetPathType() isReadRel_LocalFiles_FileOrFiles_PathType { + if x != nil { + return x.PathType } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetUriPath() string { - if x, ok := x.GetPathType().(*ReadRel_LocalFiles_FileOrFiles_UriPath); ok { - return x.UriPath + if x != nil { + if x, ok := x.PathType.(*ReadRel_LocalFiles_FileOrFiles_UriPath); ok { + return x.UriPath + } } return "" } func (x *ReadRel_LocalFiles_FileOrFiles) GetUriPathGlob() string { - if x, ok := x.GetPathType().(*ReadRel_LocalFiles_FileOrFiles_UriPathGlob); ok { - return x.UriPathGlob + if x != nil { + if x, ok := x.PathType.(*ReadRel_LocalFiles_FileOrFiles_UriPathGlob); ok { + return x.UriPathGlob + } } return "" } func (x *ReadRel_LocalFiles_FileOrFiles) GetUriFile() string { - if x, ok := x.GetPathType().(*ReadRel_LocalFiles_FileOrFiles_UriFile); ok { - return x.UriFile + if x != nil { + if x, ok := x.PathType.(*ReadRel_LocalFiles_FileOrFiles_UriFile); ok { + return x.UriFile + } } return "" } func (x *ReadRel_LocalFiles_FileOrFiles) GetUriFolder() string { - if x, ok := x.GetPathType().(*ReadRel_LocalFiles_FileOrFiles_UriFolder); ok { - return x.UriFolder + if x != nil { + if x, ok := x.PathType.(*ReadRel_LocalFiles_FileOrFiles_UriFolder); ok { + return x.UriFolder + } } return "" } @@ -5176,51 +5754,63 @@ func (x *ReadRel_LocalFiles_FileOrFiles) GetLength() uint64 { return 0 } -func (m *ReadRel_LocalFiles_FileOrFiles) GetFileFormat() isReadRel_LocalFiles_FileOrFiles_FileFormat { - if m != nil { - return m.FileFormat +func (x *ReadRel_LocalFiles_FileOrFiles) GetFileFormat() isReadRel_LocalFiles_FileOrFiles_FileFormat { + if x != nil { + return x.FileFormat } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetParquet() *ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Parquet); ok { - return x.Parquet + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Parquet); ok { + return x.Parquet + } } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetArrow() *ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Arrow); ok { - return x.Arrow + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Arrow); ok { + return x.Arrow + } } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetOrc() *ReadRel_LocalFiles_FileOrFiles_OrcReadOptions { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Orc); ok { - return x.Orc + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Orc); ok { + return x.Orc + } } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetExtension() *anypb.Any { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Extension); ok { - return x.Extension + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Extension); ok { + return x.Extension + } } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetDwrf() *ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Dwrf); ok { - return x.Dwrf + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Dwrf); ok { + return x.Dwrf + } } return nil } func (x *ReadRel_LocalFiles_FileOrFiles) GetText() *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions { - if x, ok := x.GetFileFormat().(*ReadRel_LocalFiles_FileOrFiles_Text); ok { - return x.Text + if x != nil { + if x, ok := x.FileFormat.(*ReadRel_LocalFiles_FileOrFiles_Text); ok { + return x.Text + } } return nil } @@ -5301,14 +5891,14 @@ func (*ReadRel_LocalFiles_FileOrFiles_Dwrf) isReadRel_LocalFiles_FileOrFiles_Fil func (*ReadRel_LocalFiles_FileOrFiles_Text) isReadRel_LocalFiles_FileOrFiles_FileFormat() {} type ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) Reset() { *x = ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions{} - mi := &file_substrait_algebra_proto_msgTypes[44] + mi := &file_substrait_algebra_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5320,7 +5910,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) String() string { func (*ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[44] + mi := &file_substrait_algebra_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5333,18 +5923,18 @@ func (x *ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) ProtoReflect() proto // Deprecated: Use ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0, 0} } type ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) Reset() { *x = ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions{} - mi := &file_substrait_algebra_proto_msgTypes[45] + mi := &file_substrait_algebra_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5356,7 +5946,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) String() string { func (*ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[45] + mi := &file_substrait_algebra_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5369,18 +5959,18 @@ func (x *ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) ProtoReflect() protore // Deprecated: Use ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0, 1} } type ReadRel_LocalFiles_FileOrFiles_OrcReadOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) Reset() { *x = ReadRel_LocalFiles_FileOrFiles_OrcReadOptions{} - mi := &file_substrait_algebra_proto_msgTypes[46] + mi := &file_substrait_algebra_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5392,7 +5982,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) String() string { func (*ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[46] + mi := &file_substrait_algebra_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5405,18 +5995,18 @@ func (x *ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) ProtoReflect() protorefl // Deprecated: Use ReadRel_LocalFiles_FileOrFiles_OrcReadOptions.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles_OrcReadOptions) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0, 2} } type ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) Reset() { *x = ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions{} - mi := &file_substrait_algebra_proto_msgTypes[47] + mi := &file_substrait_algebra_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5428,7 +6018,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) String() string { func (*ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[47] + mi := &file_substrait_algebra_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5441,14 +6031,11 @@ func (x *ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) ProtoReflect() protoref // Deprecated: Use ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0, 3} } type ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The character(s) used to separate fields. Common values are comma, // tab, and pipe. Multiple characters are allowed. FieldDelimiter string `protobuf:"bytes,1,opt,name=field_delimiter,json=fieldDelimiter,proto3" json:"field_delimiter,omitempty"` @@ -5470,11 +6057,13 @@ type ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions struct { // nullable strings. If not provided, the effective schema is instead // made up of non-nullable strings. ValueTreatedAsNull *string `protobuf:"bytes,6,opt,name=value_treated_as_null,json=valueTreatedAsNull,proto3,oneof" json:"value_treated_as_null,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) Reset() { *x = ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions{} - mi := &file_substrait_algebra_proto_msgTypes[48] + mi := &file_substrait_algebra_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5486,7 +6075,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) Strin func (*ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) ProtoMessage() {} func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[48] + mi := &file_substrait_algebra_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5499,7 +6088,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) Proto // Deprecated: Use ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions.ProtoReflect.Descriptor instead. func (*ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 3, 0, 4} + return file_substrait_algebra_proto_rawDescGZIP(), []int{1, 4, 0, 4} } func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) GetFieldDelimiter() string { @@ -5545,10 +6134,7 @@ func (x *ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions) GetVa } type AggregateRel_Grouping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Deprecated in favor of `expression_references` below. // // Deprecated: Marked as deprecated in substrait/algebra.proto. @@ -5556,11 +6142,13 @@ type AggregateRel_Grouping struct { // A list of zero or more references to grouping expressions, i.e., indices // into the `grouping_expression` list. ExpressionReferences []uint32 `protobuf:"varint,2,rep,packed,name=expression_references,json=expressionReferences,proto3" json:"expression_references,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AggregateRel_Grouping) Reset() { *x = AggregateRel_Grouping{} - mi := &file_substrait_algebra_proto_msgTypes[49] + mi := &file_substrait_algebra_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5572,7 +6160,7 @@ func (x *AggregateRel_Grouping) String() string { func (*AggregateRel_Grouping) ProtoMessage() {} func (x *AggregateRel_Grouping) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[49] + mi := &file_substrait_algebra_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5604,21 +6192,20 @@ func (x *AggregateRel_Grouping) GetExpressionReferences() []uint32 { } type AggregateRel_Measure struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Measure *AggregateFunction `protobuf:"bytes,1,opt,name=measure,proto3" json:"measure,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Measure *AggregateFunction `protobuf:"bytes,1,opt,name=measure,proto3" json:"measure,omitempty"` // An optional boolean expression that acts to filter which records are // included in the measure. True means include this record for calculation // within the measure. // Helps to support SUM() FILTER(WHERE...) syntax without masking opportunities for optimization - Filter *Expression `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + Filter *Expression `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AggregateRel_Measure) Reset() { *x = AggregateRel_Measure{} - mi := &file_substrait_algebra_proto_msgTypes[50] + mi := &file_substrait_algebra_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5630,7 +6217,7 @@ func (x *AggregateRel_Measure) String() string { func (*AggregateRel_Measure) ProtoMessage() {} func (x *AggregateRel_Measure) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[50] + mi := &file_substrait_algebra_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5664,10 +6251,7 @@ func (x *AggregateRel_Measure) GetFilter() *Expression { // sorts, and bounds, since those must be consistent across the various functions in this rel. Refer // to the `WindowFunction` message for a description of these fields. type ConsistentPartitionWindowRel_WindowRelFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` FunctionReference uint32 `protobuf:"varint,1,opt,name=function_reference,json=functionReference,proto3" json:"function_reference,omitempty"` Arguments []*FunctionArgument `protobuf:"bytes,9,rep,name=arguments,proto3" json:"arguments,omitempty"` Options []*FunctionOption `protobuf:"bytes,11,rep,name=options,proto3" json:"options,omitempty"` @@ -5677,11 +6261,13 @@ type ConsistentPartitionWindowRel_WindowRelFunction struct { LowerBound *Expression_WindowFunction_Bound `protobuf:"bytes,5,opt,name=lower_bound,json=lowerBound,proto3" json:"lower_bound,omitempty"` UpperBound *Expression_WindowFunction_Bound `protobuf:"bytes,4,opt,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty"` BoundsType Expression_WindowFunction_BoundsType `protobuf:"varint,12,opt,name=bounds_type,json=boundsType,proto3,enum=substrait.Expression_WindowFunction_BoundsType" json:"bounds_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConsistentPartitionWindowRel_WindowRelFunction) Reset() { *x = ConsistentPartitionWindowRel_WindowRelFunction{} - mi := &file_substrait_algebra_proto_msgTypes[51] + mi := &file_substrait_algebra_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5693,7 +6279,7 @@ func (x *ConsistentPartitionWindowRel_WindowRelFunction) String() string { func (*ConsistentPartitionWindowRel_WindowRelFunction) ProtoMessage() {} func (x *ConsistentPartitionWindowRel_WindowRelFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[51] + mi := &file_substrait_algebra_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5773,16 +6359,15 @@ func (x *ConsistentPartitionWindowRel_WindowRelFunction) GetBoundsType() Express } type ExchangeRel_ScatterFields struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*Expression_FieldReference `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []*Expression_FieldReference `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_ScatterFields) Reset() { *x = ExchangeRel_ScatterFields{} - mi := &file_substrait_algebra_proto_msgTypes[52] + mi := &file_substrait_algebra_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5794,7 +6379,7 @@ func (x *ExchangeRel_ScatterFields) String() string { func (*ExchangeRel_ScatterFields) ProtoMessage() {} func (x *ExchangeRel_ScatterFields) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[52] + mi := &file_substrait_algebra_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5819,16 +6404,15 @@ func (x *ExchangeRel_ScatterFields) GetFields() []*Expression_FieldReference { // Returns a single bucket number per record. type ExchangeRel_SingleBucketExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Expression *Expression `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` unknownFields protoimpl.UnknownFields - - Expression *Expression `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_SingleBucketExpression) Reset() { *x = ExchangeRel_SingleBucketExpression{} - mi := &file_substrait_algebra_proto_msgTypes[53] + mi := &file_substrait_algebra_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5840,7 +6424,7 @@ func (x *ExchangeRel_SingleBucketExpression) String() string { func (*ExchangeRel_SingleBucketExpression) ProtoMessage() {} func (x *ExchangeRel_SingleBucketExpression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[53] + mi := &file_substrait_algebra_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5865,17 +6449,16 @@ func (x *ExchangeRel_SingleBucketExpression) GetExpression() *Expression { // Returns zero or more bucket numbers per record type ExchangeRel_MultiBucketExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Expression *Expression `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` - ConstrainedToCount bool `protobuf:"varint,2,opt,name=constrained_to_count,json=constrainedToCount,proto3" json:"constrained_to_count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Expression *Expression `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` + ConstrainedToCount bool `protobuf:"varint,2,opt,name=constrained_to_count,json=constrainedToCount,proto3" json:"constrained_to_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_MultiBucketExpression) Reset() { *x = ExchangeRel_MultiBucketExpression{} - mi := &file_substrait_algebra_proto_msgTypes[54] + mi := &file_substrait_algebra_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5887,7 +6470,7 @@ func (x *ExchangeRel_MultiBucketExpression) String() string { func (*ExchangeRel_MultiBucketExpression) ProtoMessage() {} func (x *ExchangeRel_MultiBucketExpression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[54] + mi := &file_substrait_algebra_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5919,14 +6502,14 @@ func (x *ExchangeRel_MultiBucketExpression) GetConstrainedToCount() bool { // Send all data to every target. type ExchangeRel_Broadcast struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_Broadcast) Reset() { *x = ExchangeRel_Broadcast{} - mi := &file_substrait_algebra_proto_msgTypes[55] + mi := &file_substrait_algebra_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5938,7 +6521,7 @@ func (x *ExchangeRel_Broadcast) String() string { func (*ExchangeRel_Broadcast) ProtoMessage() {} func (x *ExchangeRel_Broadcast) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[55] + mi := &file_substrait_algebra_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5956,18 +6539,17 @@ func (*ExchangeRel_Broadcast) Descriptor() ([]byte, []int) { // Route approximately type ExchangeRel_RoundRobin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // whether the round robin behavior is required to exact (per record) or // approximate. Defaults to approximate. - Exact bool `protobuf:"varint,1,opt,name=exact,proto3" json:"exact,omitempty"` + Exact bool `protobuf:"varint,1,opt,name=exact,proto3" json:"exact,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_RoundRobin) Reset() { *x = ExchangeRel_RoundRobin{} - mi := &file_substrait_algebra_proto_msgTypes[56] + mi := &file_substrait_algebra_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5979,7 +6561,7 @@ func (x *ExchangeRel_RoundRobin) String() string { func (*ExchangeRel_RoundRobin) ProtoMessage() {} func (x *ExchangeRel_RoundRobin) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[56] + mi := &file_substrait_algebra_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6004,23 +6586,22 @@ func (x *ExchangeRel_RoundRobin) GetExact() bool { // The message to describe partition targets of an exchange type ExchangeRel_ExchangeTarget struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Describes the partition id(s) to send. If this is empty, all data is sent // to this target. PartitionId []int32 `protobuf:"varint,1,rep,packed,name=partition_id,json=partitionId,proto3" json:"partition_id,omitempty"` - // Types that are assignable to TargetType: + // Types that are valid to be assigned to TargetType: // // *ExchangeRel_ExchangeTarget_Uri // *ExchangeRel_ExchangeTarget_Extended - TargetType isExchangeRel_ExchangeTarget_TargetType `protobuf_oneof:"target_type"` + TargetType isExchangeRel_ExchangeTarget_TargetType `protobuf_oneof:"target_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExchangeRel_ExchangeTarget) Reset() { *x = ExchangeRel_ExchangeTarget{} - mi := &file_substrait_algebra_proto_msgTypes[57] + mi := &file_substrait_algebra_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6032,7 +6613,7 @@ func (x *ExchangeRel_ExchangeTarget) String() string { func (*ExchangeRel_ExchangeTarget) ProtoMessage() {} func (x *ExchangeRel_ExchangeTarget) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[57] + mi := &file_substrait_algebra_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6055,23 +6636,27 @@ func (x *ExchangeRel_ExchangeTarget) GetPartitionId() []int32 { return nil } -func (m *ExchangeRel_ExchangeTarget) GetTargetType() isExchangeRel_ExchangeTarget_TargetType { - if m != nil { - return m.TargetType +func (x *ExchangeRel_ExchangeTarget) GetTargetType() isExchangeRel_ExchangeTarget_TargetType { + if x != nil { + return x.TargetType } return nil } func (x *ExchangeRel_ExchangeTarget) GetUri() string { - if x, ok := x.GetTargetType().(*ExchangeRel_ExchangeTarget_Uri); ok { - return x.Uri + if x != nil { + if x, ok := x.TargetType.(*ExchangeRel_ExchangeTarget_Uri); ok { + return x.Uri + } } return "" } func (x *ExchangeRel_ExchangeTarget) GetExtended() *anypb.Any { - if x, ok := x.GetTargetType().(*ExchangeRel_ExchangeTarget_Extended); ok { - return x.Extended + if x != nil { + if x, ok := x.TargetType.(*ExchangeRel_ExchangeTarget_Extended); ok { + return x.Extended + } } return nil } @@ -6093,20 +6678,19 @@ func (*ExchangeRel_ExchangeTarget_Uri) isExchangeRel_ExchangeTarget_TargetType() func (*ExchangeRel_ExchangeTarget_Extended) isExchangeRel_ExchangeTarget_TargetType() {} type ExpandRel_ExpandField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to FieldType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to FieldType: // // *ExpandRel_ExpandField_SwitchingField // *ExpandRel_ExpandField_ConsistentField - FieldType isExpandRel_ExpandField_FieldType `protobuf_oneof:"field_type"` + FieldType isExpandRel_ExpandField_FieldType `protobuf_oneof:"field_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExpandRel_ExpandField) Reset() { *x = ExpandRel_ExpandField{} - mi := &file_substrait_algebra_proto_msgTypes[58] + mi := &file_substrait_algebra_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6118,7 +6702,7 @@ func (x *ExpandRel_ExpandField) String() string { func (*ExpandRel_ExpandField) ProtoMessage() {} func (x *ExpandRel_ExpandField) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[58] + mi := &file_substrait_algebra_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6134,23 +6718,27 @@ func (*ExpandRel_ExpandField) Descriptor() ([]byte, []int) { return file_substrait_algebra_proto_rawDescGZIP(), []int{15, 0} } -func (m *ExpandRel_ExpandField) GetFieldType() isExpandRel_ExpandField_FieldType { - if m != nil { - return m.FieldType +func (x *ExpandRel_ExpandField) GetFieldType() isExpandRel_ExpandField_FieldType { + if x != nil { + return x.FieldType } return nil } func (x *ExpandRel_ExpandField) GetSwitchingField() *ExpandRel_SwitchingField { - if x, ok := x.GetFieldType().(*ExpandRel_ExpandField_SwitchingField); ok { - return x.SwitchingField + if x != nil { + if x, ok := x.FieldType.(*ExpandRel_ExpandField_SwitchingField); ok { + return x.SwitchingField + } } return nil } func (x *ExpandRel_ExpandField) GetConsistentField() *Expression { - if x, ok := x.GetFieldType().(*ExpandRel_ExpandField_ConsistentField); ok { - return x.ConsistentField + if x != nil { + if x, ok := x.FieldType.(*ExpandRel_ExpandField_ConsistentField); ok { + return x.ConsistentField + } } return nil } @@ -6178,18 +6766,17 @@ func (*ExpandRel_ExpandField_SwitchingField) isExpandRel_ExpandField_FieldType() func (*ExpandRel_ExpandField_ConsistentField) isExpandRel_ExpandField_FieldType() {} type ExpandRel_SwitchingField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // All duplicates must return the same type class but may differ in nullability. The effective // type of the output field will be nullable if any of the duplicate expressions are nullable. - Duplicates []*Expression `protobuf:"bytes,1,rep,name=duplicates,proto3" json:"duplicates,omitempty"` + Duplicates []*Expression `protobuf:"bytes,1,rep,name=duplicates,proto3" json:"duplicates,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExpandRel_SwitchingField) Reset() { *x = ExpandRel_SwitchingField{} - mi := &file_substrait_algebra_proto_msgTypes[59] + mi := &file_substrait_algebra_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6201,7 +6788,7 @@ func (x *ExpandRel_SwitchingField) String() string { func (*ExpandRel_SwitchingField) ProtoMessage() {} func (x *ExpandRel_SwitchingField) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[59] + mi := &file_substrait_algebra_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6224,22 +6811,73 @@ func (x *ExpandRel_SwitchingField) GetDuplicates() []*Expression { return nil } +type UpdateRel_TransformExpression struct { + state protoimpl.MessageState `protogen:"open.v1"` + Transformation *Expression `protobuf:"bytes,1,opt,name=transformation,proto3" json:"transformation,omitempty"` // the transformation to apply + ColumnTarget int32 `protobuf:"varint,2,opt,name=column_target,json=columnTarget,proto3" json:"column_target,omitempty"` // index of the column to apply the transformation to + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateRel_TransformExpression) Reset() { + *x = UpdateRel_TransformExpression{} + mi := &file_substrait_algebra_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateRel_TransformExpression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateRel_TransformExpression) ProtoMessage() {} + +func (x *UpdateRel_TransformExpression) ProtoReflect() protoreflect.Message { + mi := &file_substrait_algebra_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateRel_TransformExpression.ProtoReflect.Descriptor instead. +func (*UpdateRel_TransformExpression) Descriptor() ([]byte, []int) { + return file_substrait_algebra_proto_rawDescGZIP(), []int{22, 0} +} + +func (x *UpdateRel_TransformExpression) GetTransformation() *Expression { + if x != nil { + return x.Transformation + } + return nil +} + +func (x *UpdateRel_TransformExpression) GetColumnTarget() int32 { + if x != nil { + return x.ColumnTarget + } + return 0 +} + // Describes how the relation should consider if two rows are a match type ComparisonJoinKey_ComparisonType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to InnerType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to InnerType: // // *ComparisonJoinKey_ComparisonType_Simple // *ComparisonJoinKey_ComparisonType_CustomFunctionReference - InnerType isComparisonJoinKey_ComparisonType_InnerType `protobuf_oneof:"inner_type"` + InnerType isComparisonJoinKey_ComparisonType_InnerType `protobuf_oneof:"inner_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ComparisonJoinKey_ComparisonType) Reset() { *x = ComparisonJoinKey_ComparisonType{} - mi := &file_substrait_algebra_proto_msgTypes[60] + mi := &file_substrait_algebra_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6251,7 +6889,7 @@ func (x *ComparisonJoinKey_ComparisonType) String() string { func (*ComparisonJoinKey_ComparisonType) ProtoMessage() {} func (x *ComparisonJoinKey_ComparisonType) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[60] + mi := &file_substrait_algebra_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6264,26 +6902,30 @@ func (x *ComparisonJoinKey_ComparisonType) ProtoReflect() protoreflect.Message { // Deprecated: Use ComparisonJoinKey_ComparisonType.ProtoReflect.Descriptor instead. func (*ComparisonJoinKey_ComparisonType) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{22, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{24, 0} } -func (m *ComparisonJoinKey_ComparisonType) GetInnerType() isComparisonJoinKey_ComparisonType_InnerType { - if m != nil { - return m.InnerType +func (x *ComparisonJoinKey_ComparisonType) GetInnerType() isComparisonJoinKey_ComparisonType_InnerType { + if x != nil { + return x.InnerType } return nil } func (x *ComparisonJoinKey_ComparisonType) GetSimple() ComparisonJoinKey_SimpleComparisonType { - if x, ok := x.GetInnerType().(*ComparisonJoinKey_ComparisonType_Simple); ok { - return x.Simple + if x != nil { + if x, ok := x.InnerType.(*ComparisonJoinKey_ComparisonType_Simple); ok { + return x.Simple + } } return ComparisonJoinKey_SIMPLE_COMPARISON_TYPE_UNSPECIFIED } func (x *ComparisonJoinKey_ComparisonType) GetCustomFunctionReference() uint32 { - if x, ok := x.GetInnerType().(*ComparisonJoinKey_ComparisonType_CustomFunctionReference); ok { - return x.CustomFunctionReference + if x != nil { + if x, ok := x.InnerType.(*ComparisonJoinKey_ComparisonType_CustomFunctionReference); ok { + return x.CustomFunctionReference + } } return 0 } @@ -6312,20 +6954,19 @@ func (*ComparisonJoinKey_ComparisonType_CustomFunctionReference) isComparisonJoi // Deprecated: Marked as deprecated in substrait/algebra.proto. type Expression_Enum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to EnumKind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to EnumKind: // // *Expression_Enum_Specified // *Expression_Enum_Unspecified - EnumKind isExpression_Enum_EnumKind `protobuf_oneof:"enum_kind"` + EnumKind isExpression_Enum_EnumKind `protobuf_oneof:"enum_kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Enum) Reset() { *x = Expression_Enum{} - mi := &file_substrait_algebra_proto_msgTypes[61] + mi := &file_substrait_algebra_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6337,7 +6978,7 @@ func (x *Expression_Enum) String() string { func (*Expression_Enum) ProtoMessage() {} func (x *Expression_Enum) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[61] + mi := &file_substrait_algebra_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6350,26 +6991,30 @@ func (x *Expression_Enum) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Enum.ProtoReflect.Descriptor instead. func (*Expression_Enum) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 0} } -func (m *Expression_Enum) GetEnumKind() isExpression_Enum_EnumKind { - if m != nil { - return m.EnumKind +func (x *Expression_Enum) GetEnumKind() isExpression_Enum_EnumKind { + if x != nil { + return x.EnumKind } return nil } func (x *Expression_Enum) GetSpecified() string { - if x, ok := x.GetEnumKind().(*Expression_Enum_Specified); ok { - return x.Specified + if x != nil { + if x, ok := x.EnumKind.(*Expression_Enum_Specified); ok { + return x.Specified + } } return "" } func (x *Expression_Enum) GetUnspecified() *Expression_Enum_Empty { - if x, ok := x.GetEnumKind().(*Expression_Enum_Unspecified); ok { - return x.Unspecified + if x != nil { + if x, ok := x.EnumKind.(*Expression_Enum_Unspecified); ok { + return x.Unspecified + } } return nil } @@ -6391,11 +7036,8 @@ func (*Expression_Enum_Specified) isExpression_Enum_EnumKind() {} func (*Expression_Enum_Unspecified) isExpression_Enum_EnumKind() {} type Expression_Literal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to LiteralType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to LiteralType: // // *Expression_Literal_Boolean // *Expression_Literal_I8 @@ -6438,11 +7080,13 @@ type Expression_Literal struct { // Applies to all members of union other than the Typed null (which should // directly declare the type variation). TypeVariationReference uint32 `protobuf:"varint,51,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal) Reset() { *x = Expression_Literal{} - mi := &file_substrait_algebra_proto_msgTypes[62] + mi := &file_substrait_algebra_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6454,7 +7098,7 @@ func (x *Expression_Literal) String() string { func (*Expression_Literal) ProtoMessage() {} func (x *Expression_Literal) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[62] + mi := &file_substrait_algebra_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6467,224 +7111,284 @@ func (x *Expression_Literal) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal.ProtoReflect.Descriptor instead. func (*Expression_Literal) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1} } -func (m *Expression_Literal) GetLiteralType() isExpression_Literal_LiteralType { - if m != nil { - return m.LiteralType +func (x *Expression_Literal) GetLiteralType() isExpression_Literal_LiteralType { + if x != nil { + return x.LiteralType } return nil } func (x *Expression_Literal) GetBoolean() bool { - if x, ok := x.GetLiteralType().(*Expression_Literal_Boolean); ok { - return x.Boolean + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Boolean); ok { + return x.Boolean + } } return false } func (x *Expression_Literal) GetI8() int32 { - if x, ok := x.GetLiteralType().(*Expression_Literal_I8); ok { - return x.I8 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_I8); ok { + return x.I8 + } } return 0 } func (x *Expression_Literal) GetI16() int32 { - if x, ok := x.GetLiteralType().(*Expression_Literal_I16); ok { - return x.I16 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_I16); ok { + return x.I16 + } } return 0 } func (x *Expression_Literal) GetI32() int32 { - if x, ok := x.GetLiteralType().(*Expression_Literal_I32); ok { - return x.I32 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_I32); ok { + return x.I32 + } } return 0 } func (x *Expression_Literal) GetI64() int64 { - if x, ok := x.GetLiteralType().(*Expression_Literal_I64); ok { - return x.I64 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_I64); ok { + return x.I64 + } } return 0 } func (x *Expression_Literal) GetFp32() float32 { - if x, ok := x.GetLiteralType().(*Expression_Literal_Fp32); ok { - return x.Fp32 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Fp32); ok { + return x.Fp32 + } } return 0 } func (x *Expression_Literal) GetFp64() float64 { - if x, ok := x.GetLiteralType().(*Expression_Literal_Fp64); ok { - return x.Fp64 + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Fp64); ok { + return x.Fp64 + } } return 0 } func (x *Expression_Literal) GetString_() string { - if x, ok := x.GetLiteralType().(*Expression_Literal_String_); ok { - return x.String_ + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_String_); ok { + return x.String_ + } } return "" } func (x *Expression_Literal) GetBinary() []byte { - if x, ok := x.GetLiteralType().(*Expression_Literal_Binary); ok { - return x.Binary + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Binary); ok { + return x.Binary + } } return nil } // Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *Expression_Literal) GetTimestamp() int64 { - if x, ok := x.GetLiteralType().(*Expression_Literal_Timestamp); ok { - return x.Timestamp + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Timestamp); ok { + return x.Timestamp + } } return 0 } func (x *Expression_Literal) GetDate() int32 { - if x, ok := x.GetLiteralType().(*Expression_Literal_Date); ok { - return x.Date + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Date); ok { + return x.Date + } } return 0 } func (x *Expression_Literal) GetTime() int64 { - if x, ok := x.GetLiteralType().(*Expression_Literal_Time); ok { - return x.Time + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Time); ok { + return x.Time + } } return 0 } func (x *Expression_Literal) GetIntervalYearToMonth() *Expression_Literal_IntervalYearToMonth { - if x, ok := x.GetLiteralType().(*Expression_Literal_IntervalYearToMonth_); ok { - return x.IntervalYearToMonth + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_IntervalYearToMonth_); ok { + return x.IntervalYearToMonth + } } return nil } func (x *Expression_Literal) GetIntervalDayToSecond() *Expression_Literal_IntervalDayToSecond { - if x, ok := x.GetLiteralType().(*Expression_Literal_IntervalDayToSecond_); ok { - return x.IntervalDayToSecond + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_IntervalDayToSecond_); ok { + return x.IntervalDayToSecond + } } return nil } func (x *Expression_Literal) GetIntervalCompound() *Expression_Literal_IntervalCompound { - if x, ok := x.GetLiteralType().(*Expression_Literal_IntervalCompound_); ok { - return x.IntervalCompound + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_IntervalCompound_); ok { + return x.IntervalCompound + } } return nil } func (x *Expression_Literal) GetFixedChar() string { - if x, ok := x.GetLiteralType().(*Expression_Literal_FixedChar); ok { - return x.FixedChar + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_FixedChar); ok { + return x.FixedChar + } } return "" } func (x *Expression_Literal) GetVarChar() *Expression_Literal_VarChar { - if x, ok := x.GetLiteralType().(*Expression_Literal_VarChar_); ok { - return x.VarChar + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_VarChar_); ok { + return x.VarChar + } } return nil } func (x *Expression_Literal) GetFixedBinary() []byte { - if x, ok := x.GetLiteralType().(*Expression_Literal_FixedBinary); ok { - return x.FixedBinary + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_FixedBinary); ok { + return x.FixedBinary + } } return nil } func (x *Expression_Literal) GetDecimal() *Expression_Literal_Decimal { - if x, ok := x.GetLiteralType().(*Expression_Literal_Decimal_); ok { - return x.Decimal + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Decimal_); ok { + return x.Decimal + } } return nil } func (x *Expression_Literal) GetPrecisionTimestamp() *Expression_Literal_PrecisionTimestamp { - if x, ok := x.GetLiteralType().(*Expression_Literal_PrecisionTimestamp_); ok { - return x.PrecisionTimestamp + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_PrecisionTimestamp_); ok { + return x.PrecisionTimestamp + } } return nil } func (x *Expression_Literal) GetPrecisionTimestampTz() *Expression_Literal_PrecisionTimestamp { - if x, ok := x.GetLiteralType().(*Expression_Literal_PrecisionTimestampTz); ok { - return x.PrecisionTimestampTz + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_PrecisionTimestampTz); ok { + return x.PrecisionTimestampTz + } } return nil } func (x *Expression_Literal) GetStruct() *Expression_Literal_Struct { - if x, ok := x.GetLiteralType().(*Expression_Literal_Struct_); ok { - return x.Struct + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Struct_); ok { + return x.Struct + } } return nil } func (x *Expression_Literal) GetMap() *Expression_Literal_Map { - if x, ok := x.GetLiteralType().(*Expression_Literal_Map_); ok { - return x.Map - } + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Map_); ok { + return x.Map + } + } return nil } // Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *Expression_Literal) GetTimestampTz() int64 { - if x, ok := x.GetLiteralType().(*Expression_Literal_TimestampTz); ok { - return x.TimestampTz + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_TimestampTz); ok { + return x.TimestampTz + } } return 0 } func (x *Expression_Literal) GetUuid() []byte { - if x, ok := x.GetLiteralType().(*Expression_Literal_Uuid); ok { - return x.Uuid + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Uuid); ok { + return x.Uuid + } } return nil } func (x *Expression_Literal) GetNull() *Type { - if x, ok := x.GetLiteralType().(*Expression_Literal_Null); ok { - return x.Null + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_Null); ok { + return x.Null + } } return nil } func (x *Expression_Literal) GetList() *Expression_Literal_List { - if x, ok := x.GetLiteralType().(*Expression_Literal_List_); ok { - return x.List + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_List_); ok { + return x.List + } } return nil } func (x *Expression_Literal) GetEmptyList() *Type_List { - if x, ok := x.GetLiteralType().(*Expression_Literal_EmptyList); ok { - return x.EmptyList + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_EmptyList); ok { + return x.EmptyList + } } return nil } func (x *Expression_Literal) GetEmptyMap() *Type_Map { - if x, ok := x.GetLiteralType().(*Expression_Literal_EmptyMap); ok { - return x.EmptyMap + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_EmptyMap); ok { + return x.EmptyMap + } } return nil } func (x *Expression_Literal) GetUserDefined() *Expression_Literal_UserDefined { - if x, ok := x.GetLiteralType().(*Expression_Literal_UserDefined_); ok { - return x.UserDefined + if x != nil { + if x, ok := x.LiteralType.(*Expression_Literal_UserDefined_); ok { + return x.UserDefined + } } return nil } @@ -6899,26 +7603,25 @@ func (*Expression_Literal_UserDefined_) isExpression_Literal_LiteralType() {} // Expression to dynamically construct nested types. type Expression_Nested struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Whether the returned nested type is nullable. Nullable bool `protobuf:"varint,1,opt,name=nullable,proto3" json:"nullable,omitempty"` // Optionally points to a type_variation_anchor defined in this plan for // the returned nested type. TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - // Types that are assignable to NestedType: + // Types that are valid to be assigned to NestedType: // // *Expression_Nested_Struct_ // *Expression_Nested_List_ // *Expression_Nested_Map_ - NestedType isExpression_Nested_NestedType `protobuf_oneof:"nested_type"` + NestedType isExpression_Nested_NestedType `protobuf_oneof:"nested_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Nested) Reset() { *x = Expression_Nested{} - mi := &file_substrait_algebra_proto_msgTypes[63] + mi := &file_substrait_algebra_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6930,7 +7633,7 @@ func (x *Expression_Nested) String() string { func (*Expression_Nested) ProtoMessage() {} func (x *Expression_Nested) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[63] + mi := &file_substrait_algebra_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6943,7 +7646,7 @@ func (x *Expression_Nested) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Nested.ProtoReflect.Descriptor instead. func (*Expression_Nested) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 2} } func (x *Expression_Nested) GetNullable() bool { @@ -6960,30 +7663,36 @@ func (x *Expression_Nested) GetTypeVariationReference() uint32 { return 0 } -func (m *Expression_Nested) GetNestedType() isExpression_Nested_NestedType { - if m != nil { - return m.NestedType +func (x *Expression_Nested) GetNestedType() isExpression_Nested_NestedType { + if x != nil { + return x.NestedType } return nil } func (x *Expression_Nested) GetStruct() *Expression_Nested_Struct { - if x, ok := x.GetNestedType().(*Expression_Nested_Struct_); ok { - return x.Struct + if x != nil { + if x, ok := x.NestedType.(*Expression_Nested_Struct_); ok { + return x.Struct + } } return nil } func (x *Expression_Nested) GetList() *Expression_Nested_List { - if x, ok := x.GetNestedType().(*Expression_Nested_List_); ok { - return x.List + if x != nil { + if x, ok := x.NestedType.(*Expression_Nested_List_); ok { + return x.List + } } return nil } func (x *Expression_Nested) GetMap() *Expression_Nested_Map { - if x, ok := x.GetNestedType().(*Expression_Nested_Map_); ok { - return x.Map + if x != nil { + if x, ok := x.NestedType.(*Expression_Nested_Map_); ok { + return x.Map + } } return nil } @@ -7012,10 +7721,7 @@ func (*Expression_Nested_Map_) isExpression_Nested_NestedType() {} // A scalar function call. type Expression_ScalarFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Points to a function_anchor defined in this plan, which must refer // to a scalar function in the associated YAML file. Required; avoid // using anchor/reference zero. @@ -7042,12 +7748,14 @@ type Expression_ScalarFunction struct { // Deprecated; use arguments instead. // // Deprecated: Marked as deprecated in substrait/algebra.proto. - Args []*Expression `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Args []*Expression `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_ScalarFunction) Reset() { *x = Expression_ScalarFunction{} - mi := &file_substrait_algebra_proto_msgTypes[64] + mi := &file_substrait_algebra_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7059,7 +7767,7 @@ func (x *Expression_ScalarFunction) String() string { func (*Expression_ScalarFunction) ProtoMessage() {} func (x *Expression_ScalarFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[64] + mi := &file_substrait_algebra_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7072,7 +7780,7 @@ func (x *Expression_ScalarFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_ScalarFunction.ProtoReflect.Descriptor instead. func (*Expression_ScalarFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 3} } func (x *Expression_ScalarFunction) GetFunctionReference() uint32 { @@ -7113,10 +7821,7 @@ func (x *Expression_ScalarFunction) GetArgs() []*Expression { // A window function call. type Expression_WindowFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Points to a function_anchor defined in this plan. The function must be: // - a window function // - an aggregate function @@ -7183,12 +7888,14 @@ type Expression_WindowFunction struct { // Deprecated; use arguments instead. // // Deprecated: Marked as deprecated in substrait/algebra.proto. - Args []*Expression `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + Args []*Expression `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction) Reset() { *x = Expression_WindowFunction{} - mi := &file_substrait_algebra_proto_msgTypes[65] + mi := &file_substrait_algebra_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7200,7 +7907,7 @@ func (x *Expression_WindowFunction) String() string { func (*Expression_WindowFunction) ProtoMessage() {} func (x *Expression_WindowFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[65] + mi := &file_substrait_algebra_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7213,7 +7920,7 @@ func (x *Expression_WindowFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_WindowFunction.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4} } func (x *Expression_WindowFunction) GetFunctionReference() uint32 { @@ -7302,19 +8009,18 @@ func (x *Expression_WindowFunction) GetArgs() []*Expression { } type Expression_IfThen struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A list of one or more IfClauses Ifs []*Expression_IfThen_IfClause `protobuf:"bytes,1,rep,name=ifs,proto3" json:"ifs,omitempty"` // The returned Expression if no IfClauses are satisified - Else *Expression `protobuf:"bytes,2,opt,name=else,proto3" json:"else,omitempty"` + Else *Expression `protobuf:"bytes,2,opt,name=else,proto3" json:"else,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_IfThen) Reset() { *x = Expression_IfThen{} - mi := &file_substrait_algebra_proto_msgTypes[66] + mi := &file_substrait_algebra_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7326,7 +8032,7 @@ func (x *Expression_IfThen) String() string { func (*Expression_IfThen) ProtoMessage() {} func (x *Expression_IfThen) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[66] + mi := &file_substrait_algebra_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7339,7 +8045,7 @@ func (x *Expression_IfThen) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_IfThen.ProtoReflect.Descriptor instead. func (*Expression_IfThen) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 5} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 5} } func (x *Expression_IfThen) GetIfs() []*Expression_IfThen_IfClause { @@ -7357,18 +8063,17 @@ func (x *Expression_IfThen) GetElse() *Expression { } type Expression_Cast struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Type *Type `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` Input *Expression `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"` FailureBehavior Expression_Cast_FailureBehavior `protobuf:"varint,3,opt,name=failure_behavior,json=failureBehavior,proto3,enum=substrait.Expression_Cast_FailureBehavior" json:"failure_behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Cast) Reset() { *x = Expression_Cast{} - mi := &file_substrait_algebra_proto_msgTypes[67] + mi := &file_substrait_algebra_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7380,7 +8085,7 @@ func (x *Expression_Cast) String() string { func (*Expression_Cast) ProtoMessage() {} func (x *Expression_Cast) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[67] + mi := &file_substrait_algebra_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7393,7 +8098,7 @@ func (x *Expression_Cast) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Cast.ProtoReflect.Descriptor instead. func (*Expression_Cast) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 6} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 6} } func (x *Expression_Cast) GetType() *Type { @@ -7418,18 +8123,17 @@ func (x *Expression_Cast) GetFailureBehavior() Expression_Cast_FailureBehavior { } type Expression_SwitchExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Match *Expression `protobuf:"bytes,3,opt,name=match,proto3" json:"match,omitempty"` + Ifs []*Expression_SwitchExpression_IfValue `protobuf:"bytes,1,rep,name=ifs,proto3" json:"ifs,omitempty"` + Else *Expression `protobuf:"bytes,2,opt,name=else,proto3" json:"else,omitempty"` unknownFields protoimpl.UnknownFields - - Match *Expression `protobuf:"bytes,3,opt,name=match,proto3" json:"match,omitempty"` - Ifs []*Expression_SwitchExpression_IfValue `protobuf:"bytes,1,rep,name=ifs,proto3" json:"ifs,omitempty"` - Else *Expression `protobuf:"bytes,2,opt,name=else,proto3" json:"else,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_SwitchExpression) Reset() { *x = Expression_SwitchExpression{} - mi := &file_substrait_algebra_proto_msgTypes[68] + mi := &file_substrait_algebra_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7441,7 +8145,7 @@ func (x *Expression_SwitchExpression) String() string { func (*Expression_SwitchExpression) ProtoMessage() {} func (x *Expression_SwitchExpression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[68] + mi := &file_substrait_algebra_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7454,7 +8158,7 @@ func (x *Expression_SwitchExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_SwitchExpression.ProtoReflect.Descriptor instead. func (*Expression_SwitchExpression) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 7} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 7} } func (x *Expression_SwitchExpression) GetMatch() *Expression { @@ -7479,17 +8183,16 @@ func (x *Expression_SwitchExpression) GetElse() *Expression { } type Expression_SingularOrList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value *Expression `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Options []*Expression `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - Value *Expression `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - Options []*Expression `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_SingularOrList) Reset() { *x = Expression_SingularOrList{} - mi := &file_substrait_algebra_proto_msgTypes[69] + mi := &file_substrait_algebra_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7501,7 +8204,7 @@ func (x *Expression_SingularOrList) String() string { func (*Expression_SingularOrList) ProtoMessage() {} func (x *Expression_SingularOrList) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[69] + mi := &file_substrait_algebra_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7514,7 +8217,7 @@ func (x *Expression_SingularOrList) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_SingularOrList.ProtoReflect.Descriptor instead. func (*Expression_SingularOrList) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 8} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 8} } func (x *Expression_SingularOrList) GetValue() *Expression { @@ -7532,17 +8235,16 @@ func (x *Expression_SingularOrList) GetOptions() []*Expression { } type Expression_MultiOrList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value []*Expression `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` + Options []*Expression_MultiOrList_Record `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - Value []*Expression `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` - Options []*Expression_MultiOrList_Record `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MultiOrList) Reset() { *x = Expression_MultiOrList{} - mi := &file_substrait_algebra_proto_msgTypes[70] + mi := &file_substrait_algebra_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7554,7 +8256,7 @@ func (x *Expression_MultiOrList) String() string { func (*Expression_MultiOrList) ProtoMessage() {} func (x *Expression_MultiOrList) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[70] + mi := &file_substrait_algebra_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7567,7 +8269,7 @@ func (x *Expression_MultiOrList) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_MultiOrList.ProtoReflect.Descriptor instead. func (*Expression_MultiOrList) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 9} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 9} } func (x *Expression_MultiOrList) GetValue() []*Expression { @@ -7585,22 +8287,21 @@ func (x *Expression_MultiOrList) GetOptions() []*Expression_MultiOrList_Record { } type Expression_EmbeddedFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Arguments []*Expression `protobuf:"bytes,1,rep,name=arguments,proto3" json:"arguments,omitempty"` - OutputType *Type `protobuf:"bytes,2,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"` - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + Arguments []*Expression `protobuf:"bytes,1,rep,name=arguments,proto3" json:"arguments,omitempty"` + OutputType *Type `protobuf:"bytes,2,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"` + // Types that are valid to be assigned to Kind: // // *Expression_EmbeddedFunction_PythonPickleFunction_ // *Expression_EmbeddedFunction_WebAssemblyFunction_ - Kind isExpression_EmbeddedFunction_Kind `protobuf_oneof:"kind"` + Kind isExpression_EmbeddedFunction_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_EmbeddedFunction) Reset() { *x = Expression_EmbeddedFunction{} - mi := &file_substrait_algebra_proto_msgTypes[71] + mi := &file_substrait_algebra_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7612,7 +8313,7 @@ func (x *Expression_EmbeddedFunction) String() string { func (*Expression_EmbeddedFunction) ProtoMessage() {} func (x *Expression_EmbeddedFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[71] + mi := &file_substrait_algebra_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7625,7 +8326,7 @@ func (x *Expression_EmbeddedFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_EmbeddedFunction.ProtoReflect.Descriptor instead. func (*Expression_EmbeddedFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 10} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 10} } func (x *Expression_EmbeddedFunction) GetArguments() []*Expression { @@ -7642,23 +8343,27 @@ func (x *Expression_EmbeddedFunction) GetOutputType() *Type { return nil } -func (m *Expression_EmbeddedFunction) GetKind() isExpression_EmbeddedFunction_Kind { - if m != nil { - return m.Kind +func (x *Expression_EmbeddedFunction) GetKind() isExpression_EmbeddedFunction_Kind { + if x != nil { + return x.Kind } return nil } func (x *Expression_EmbeddedFunction) GetPythonPickleFunction() *Expression_EmbeddedFunction_PythonPickleFunction { - if x, ok := x.GetKind().(*Expression_EmbeddedFunction_PythonPickleFunction_); ok { - return x.PythonPickleFunction + if x != nil { + if x, ok := x.Kind.(*Expression_EmbeddedFunction_PythonPickleFunction_); ok { + return x.PythonPickleFunction + } } return nil } func (x *Expression_EmbeddedFunction) GetWebAssemblyFunction() *Expression_EmbeddedFunction_WebAssemblyFunction { - if x, ok := x.GetKind().(*Expression_EmbeddedFunction_WebAssemblyFunction_); ok { - return x.WebAssemblyFunction + if x != nil { + if x, ok := x.Kind.(*Expression_EmbeddedFunction_WebAssemblyFunction_); ok { + return x.WebAssemblyFunction + } } return nil } @@ -7687,21 +8392,20 @@ func (*Expression_EmbeddedFunction_WebAssemblyFunction_) isExpression_EmbeddedFu // (ordinalized in the internal representation here), [2] is a list offset // and ['my_map_key'] is a reference into a map field. type Expression_ReferenceSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ReferenceType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ReferenceType: // // *Expression_ReferenceSegment_MapKey_ // *Expression_ReferenceSegment_StructField_ // *Expression_ReferenceSegment_ListElement_ ReferenceType isExpression_ReferenceSegment_ReferenceType `protobuf_oneof:"reference_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_ReferenceSegment) Reset() { *x = Expression_ReferenceSegment{} - mi := &file_substrait_algebra_proto_msgTypes[72] + mi := &file_substrait_algebra_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7713,7 +8417,7 @@ func (x *Expression_ReferenceSegment) String() string { func (*Expression_ReferenceSegment) ProtoMessage() {} func (x *Expression_ReferenceSegment) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[72] + mi := &file_substrait_algebra_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7726,33 +8430,39 @@ func (x *Expression_ReferenceSegment) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_ReferenceSegment.ProtoReflect.Descriptor instead. func (*Expression_ReferenceSegment) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 11} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 11} } -func (m *Expression_ReferenceSegment) GetReferenceType() isExpression_ReferenceSegment_ReferenceType { - if m != nil { - return m.ReferenceType +func (x *Expression_ReferenceSegment) GetReferenceType() isExpression_ReferenceSegment_ReferenceType { + if x != nil { + return x.ReferenceType } return nil } func (x *Expression_ReferenceSegment) GetMapKey() *Expression_ReferenceSegment_MapKey { - if x, ok := x.GetReferenceType().(*Expression_ReferenceSegment_MapKey_); ok { - return x.MapKey + if x != nil { + if x, ok := x.ReferenceType.(*Expression_ReferenceSegment_MapKey_); ok { + return x.MapKey + } } return nil } func (x *Expression_ReferenceSegment) GetStructField() *Expression_ReferenceSegment_StructField { - if x, ok := x.GetReferenceType().(*Expression_ReferenceSegment_StructField_); ok { - return x.StructField + if x != nil { + if x, ok := x.ReferenceType.(*Expression_ReferenceSegment_StructField_); ok { + return x.StructField + } } return nil } func (x *Expression_ReferenceSegment) GetListElement() *Expression_ReferenceSegment_ListElement { - if x, ok := x.GetReferenceType().(*Expression_ReferenceSegment_ListElement_); ok { - return x.ListElement + if x != nil { + if x, ok := x.ReferenceType.(*Expression_ReferenceSegment_ListElement_); ok { + return x.ListElement + } } return nil } @@ -7789,17 +8499,16 @@ func (*Expression_ReferenceSegment_ListElement_) isExpression_ReferenceSegment_R // Note that this does not fundamentally alter the structure of data beyond // the elimination of unnecessary elements. type Expression_MaskExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Select *Expression_MaskExpression_StructSelect `protobuf:"bytes,1,opt,name=select,proto3" json:"select,omitempty"` MaintainSingularStruct bool `protobuf:"varint,2,opt,name=maintain_singular_struct,json=maintainSingularStruct,proto3" json:"maintain_singular_struct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression) Reset() { *x = Expression_MaskExpression{} - mi := &file_substrait_algebra_proto_msgTypes[73] + mi := &file_substrait_algebra_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7811,7 +8520,7 @@ func (x *Expression_MaskExpression) String() string { func (*Expression_MaskExpression) ProtoMessage() {} func (x *Expression_MaskExpression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[73] + mi := &file_substrait_algebra_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7824,7 +8533,7 @@ func (x *Expression_MaskExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_MaskExpression.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12} } func (x *Expression_MaskExpression) GetSelect() *Expression_MaskExpression_StructSelect { @@ -7844,14 +8553,11 @@ func (x *Expression_MaskExpression) GetMaintainSingularStruct() bool { // A reference to an inner part of a complex object. Can reference reference a // single element or a masked version of elements type Expression_FieldReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Whether this is composed of a single element reference or a masked // element subtree // - // Types that are assignable to ReferenceType: + // Types that are valid to be assigned to ReferenceType: // // *Expression_FieldReference_DirectReference // *Expression_FieldReference_MaskedReference @@ -7860,17 +8566,19 @@ type Expression_FieldReference struct { // ouput of an expression. When this is a RootReference and direct_reference // above is used, the direct_reference must be of a type StructField. // - // Types that are assignable to RootType: + // Types that are valid to be assigned to RootType: // // *Expression_FieldReference_Expression // *Expression_FieldReference_RootReference_ // *Expression_FieldReference_OuterReference_ - RootType isExpression_FieldReference_RootType `protobuf_oneof:"root_type"` + RootType isExpression_FieldReference_RootType `protobuf_oneof:"root_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_FieldReference) Reset() { *x = Expression_FieldReference{} - mi := &file_substrait_algebra_proto_msgTypes[74] + mi := &file_substrait_algebra_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7882,7 +8590,7 @@ func (x *Expression_FieldReference) String() string { func (*Expression_FieldReference) ProtoMessage() {} func (x *Expression_FieldReference) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[74] + mi := &file_substrait_algebra_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7895,54 +8603,64 @@ func (x *Expression_FieldReference) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_FieldReference.ProtoReflect.Descriptor instead. func (*Expression_FieldReference) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 13} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 13} } -func (m *Expression_FieldReference) GetReferenceType() isExpression_FieldReference_ReferenceType { - if m != nil { - return m.ReferenceType +func (x *Expression_FieldReference) GetReferenceType() isExpression_FieldReference_ReferenceType { + if x != nil { + return x.ReferenceType } return nil } func (x *Expression_FieldReference) GetDirectReference() *Expression_ReferenceSegment { - if x, ok := x.GetReferenceType().(*Expression_FieldReference_DirectReference); ok { - return x.DirectReference + if x != nil { + if x, ok := x.ReferenceType.(*Expression_FieldReference_DirectReference); ok { + return x.DirectReference + } } return nil } func (x *Expression_FieldReference) GetMaskedReference() *Expression_MaskExpression { - if x, ok := x.GetReferenceType().(*Expression_FieldReference_MaskedReference); ok { - return x.MaskedReference + if x != nil { + if x, ok := x.ReferenceType.(*Expression_FieldReference_MaskedReference); ok { + return x.MaskedReference + } } return nil } -func (m *Expression_FieldReference) GetRootType() isExpression_FieldReference_RootType { - if m != nil { - return m.RootType +func (x *Expression_FieldReference) GetRootType() isExpression_FieldReference_RootType { + if x != nil { + return x.RootType } return nil } func (x *Expression_FieldReference) GetExpression() *Expression { - if x, ok := x.GetRootType().(*Expression_FieldReference_Expression); ok { - return x.Expression + if x != nil { + if x, ok := x.RootType.(*Expression_FieldReference_Expression); ok { + return x.Expression + } } return nil } func (x *Expression_FieldReference) GetRootReference() *Expression_FieldReference_RootReference { - if x, ok := x.GetRootType().(*Expression_FieldReference_RootReference_); ok { - return x.RootReference + if x != nil { + if x, ok := x.RootType.(*Expression_FieldReference_RootReference_); ok { + return x.RootReference + } } return nil } func (x *Expression_FieldReference) GetOuterReference() *Expression_FieldReference_OuterReference { - if x, ok := x.GetRootType().(*Expression_FieldReference_OuterReference_); ok { - return x.OuterReference + if x != nil { + if x, ok := x.RootType.(*Expression_FieldReference_OuterReference_); ok { + return x.OuterReference + } } return nil } @@ -7987,22 +8705,21 @@ func (*Expression_FieldReference_OuterReference_) isExpression_FieldReference_Ro // Subquery relation expression type Expression_Subquery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to SubqueryType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to SubqueryType: // // *Expression_Subquery_Scalar_ // *Expression_Subquery_InPredicate_ // *Expression_Subquery_SetPredicate_ // *Expression_Subquery_SetComparison_ - SubqueryType isExpression_Subquery_SubqueryType `protobuf_oneof:"subquery_type"` + SubqueryType isExpression_Subquery_SubqueryType `protobuf_oneof:"subquery_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Subquery) Reset() { *x = Expression_Subquery{} - mi := &file_substrait_algebra_proto_msgTypes[75] + mi := &file_substrait_algebra_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8014,7 +8731,7 @@ func (x *Expression_Subquery) String() string { func (*Expression_Subquery) ProtoMessage() {} func (x *Expression_Subquery) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[75] + mi := &file_substrait_algebra_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8027,40 +8744,48 @@ func (x *Expression_Subquery) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Subquery.ProtoReflect.Descriptor instead. func (*Expression_Subquery) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14} } -func (m *Expression_Subquery) GetSubqueryType() isExpression_Subquery_SubqueryType { - if m != nil { - return m.SubqueryType +func (x *Expression_Subquery) GetSubqueryType() isExpression_Subquery_SubqueryType { + if x != nil { + return x.SubqueryType } return nil } func (x *Expression_Subquery) GetScalar() *Expression_Subquery_Scalar { - if x, ok := x.GetSubqueryType().(*Expression_Subquery_Scalar_); ok { - return x.Scalar + if x != nil { + if x, ok := x.SubqueryType.(*Expression_Subquery_Scalar_); ok { + return x.Scalar + } } return nil } func (x *Expression_Subquery) GetInPredicate() *Expression_Subquery_InPredicate { - if x, ok := x.GetSubqueryType().(*Expression_Subquery_InPredicate_); ok { - return x.InPredicate + if x != nil { + if x, ok := x.SubqueryType.(*Expression_Subquery_InPredicate_); ok { + return x.InPredicate + } } return nil } func (x *Expression_Subquery) GetSetPredicate() *Expression_Subquery_SetPredicate { - if x, ok := x.GetSubqueryType().(*Expression_Subquery_SetPredicate_); ok { - return x.SetPredicate + if x != nil { + if x, ok := x.SubqueryType.(*Expression_Subquery_SetPredicate_); ok { + return x.SetPredicate + } } return nil } func (x *Expression_Subquery) GetSetComparison() *Expression_Subquery_SetComparison { - if x, ok := x.GetSubqueryType().(*Expression_Subquery_SetComparison_); ok { - return x.SetComparison + if x != nil { + if x, ok := x.SubqueryType.(*Expression_Subquery_SetComparison_); ok { + return x.SetComparison + } } return nil } @@ -8099,14 +8824,14 @@ func (*Expression_Subquery_SetComparison_) isExpression_Subquery_SubqueryType() // Deprecated: Marked as deprecated in substrait/algebra.proto. type Expression_Enum_Empty struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Enum_Empty) Reset() { *x = Expression_Enum_Empty{} - mi := &file_substrait_algebra_proto_msgTypes[76] + mi := &file_substrait_algebra_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8118,7 +8843,7 @@ func (x *Expression_Enum_Empty) String() string { func (*Expression_Enum_Empty) ProtoMessage() {} func (x *Expression_Enum_Empty) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[76] + mi := &file_substrait_algebra_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8131,21 +8856,20 @@ func (x *Expression_Enum_Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Enum_Empty.ProtoReflect.Descriptor instead. func (*Expression_Enum_Empty) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 0, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 0, 0} } type Expression_Literal_VarChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` unknownFields protoimpl.UnknownFields - - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` - Length uint32 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_VarChar) Reset() { *x = Expression_Literal_VarChar{} - mi := &file_substrait_algebra_proto_msgTypes[77] + mi := &file_substrait_algebra_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8157,7 +8881,7 @@ func (x *Expression_Literal_VarChar) String() string { func (*Expression_Literal_VarChar) ProtoMessage() {} func (x *Expression_Literal_VarChar) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[77] + mi := &file_substrait_algebra_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8170,7 +8894,7 @@ func (x *Expression_Literal_VarChar) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_VarChar.ProtoReflect.Descriptor instead. func (*Expression_Literal_VarChar) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 0} } func (x *Expression_Literal_VarChar) GetValue() string { @@ -8188,10 +8912,7 @@ func (x *Expression_Literal_VarChar) GetLength() uint32 { } type Expression_Literal_Decimal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // little-endian twos-complement integer representation of complete value // (ignoring precision) Always 16 bytes in length Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` @@ -8199,12 +8920,14 @@ type Expression_Literal_Decimal struct { // the maximum precision is 38. Precision int32 `protobuf:"varint,2,opt,name=precision,proto3" json:"precision,omitempty"` // declared scale of decimal literal - Scale int32 `protobuf:"varint,3,opt,name=scale,proto3" json:"scale,omitempty"` + Scale int32 `protobuf:"varint,3,opt,name=scale,proto3" json:"scale,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_Decimal) Reset() { *x = Expression_Literal_Decimal{} - mi := &file_substrait_algebra_proto_msgTypes[78] + mi := &file_substrait_algebra_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8216,7 +8939,7 @@ func (x *Expression_Literal_Decimal) String() string { func (*Expression_Literal_Decimal) ProtoMessage() {} func (x *Expression_Literal_Decimal) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[78] + mi := &file_substrait_algebra_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8229,7 +8952,7 @@ func (x *Expression_Literal_Decimal) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_Decimal.ProtoReflect.Descriptor instead. func (*Expression_Literal_Decimal) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 1} } func (x *Expression_Literal_Decimal) GetValue() []byte { @@ -8254,19 +8977,18 @@ func (x *Expression_Literal_Decimal) GetScale() int32 { } type Expression_Literal_PrecisionTimestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds Precision int32 `protobuf:"varint,1,opt,name=precision,proto3" json:"precision,omitempty"` // Time passed since 1970-01-01 00:00:00.000000 in UTC for PrecisionTimestampTZ and unspecified timezone for PrecisionTimestamp - Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` + Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_PrecisionTimestamp) Reset() { *x = Expression_Literal_PrecisionTimestamp{} - mi := &file_substrait_algebra_proto_msgTypes[79] + mi := &file_substrait_algebra_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8278,7 +9000,7 @@ func (x *Expression_Literal_PrecisionTimestamp) String() string { func (*Expression_Literal_PrecisionTimestamp) ProtoMessage() {} func (x *Expression_Literal_PrecisionTimestamp) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[79] + mi := &file_substrait_algebra_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8291,7 +9013,7 @@ func (x *Expression_Literal_PrecisionTimestamp) ProtoReflect() protoreflect.Mess // Deprecated: Use Expression_Literal_PrecisionTimestamp.ProtoReflect.Descriptor instead. func (*Expression_Literal_PrecisionTimestamp) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 2} } func (x *Expression_Literal_PrecisionTimestamp) GetPrecision() int32 { @@ -8309,16 +9031,15 @@ func (x *Expression_Literal_PrecisionTimestamp) GetValue() int64 { } type Expression_Literal_Map struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + KeyValues []*Expression_Literal_Map_KeyValue `protobuf:"bytes,1,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` unknownFields protoimpl.UnknownFields - - KeyValues []*Expression_Literal_Map_KeyValue `protobuf:"bytes,1,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_Map) Reset() { *x = Expression_Literal_Map{} - mi := &file_substrait_algebra_proto_msgTypes[80] + mi := &file_substrait_algebra_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8330,7 +9051,7 @@ func (x *Expression_Literal_Map) String() string { func (*Expression_Literal_Map) ProtoMessage() {} func (x *Expression_Literal_Map) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[80] + mi := &file_substrait_algebra_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8343,7 +9064,7 @@ func (x *Expression_Literal_Map) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_Map.ProtoReflect.Descriptor instead. func (*Expression_Literal_Map) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 3} } func (x *Expression_Literal_Map) GetKeyValues() []*Expression_Literal_Map_KeyValue { @@ -8354,17 +9075,16 @@ func (x *Expression_Literal_Map) GetKeyValues() []*Expression_Literal_Map_KeyVal } type Expression_Literal_IntervalYearToMonth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Years int32 `protobuf:"varint,1,opt,name=years,proto3" json:"years,omitempty"` + Months int32 `protobuf:"varint,2,opt,name=months,proto3" json:"months,omitempty"` unknownFields protoimpl.UnknownFields - - Years int32 `protobuf:"varint,1,opt,name=years,proto3" json:"years,omitempty"` - Months int32 `protobuf:"varint,2,opt,name=months,proto3" json:"months,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_IntervalYearToMonth) Reset() { *x = Expression_Literal_IntervalYearToMonth{} - mi := &file_substrait_algebra_proto_msgTypes[81] + mi := &file_substrait_algebra_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8376,7 +9096,7 @@ func (x *Expression_Literal_IntervalYearToMonth) String() string { func (*Expression_Literal_IntervalYearToMonth) ProtoMessage() {} func (x *Expression_Literal_IntervalYearToMonth) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[81] + mi := &file_substrait_algebra_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8389,7 +9109,7 @@ func (x *Expression_Literal_IntervalYearToMonth) ProtoReflect() protoreflect.Mes // Deprecated: Use Expression_Literal_IntervalYearToMonth.ProtoReflect.Descriptor instead. func (*Expression_Literal_IntervalYearToMonth) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 4} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 4} } func (x *Expression_Literal_IntervalYearToMonth) GetYears() int32 { @@ -8407,26 +9127,25 @@ func (x *Expression_Literal_IntervalYearToMonth) GetMonths() int32 { } type Expression_Literal_IntervalDayToSecond struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Days int32 `protobuf:"varint,1,opt,name=days,proto3" json:"days,omitempty"` - Seconds int32 `protobuf:"varint,2,opt,name=seconds,proto3" json:"seconds,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Days int32 `protobuf:"varint,1,opt,name=days,proto3" json:"days,omitempty"` + Seconds int32 `protobuf:"varint,2,opt,name=seconds,proto3" json:"seconds,omitempty"` // Consumers should expect either (miroseconds) to be set or (precision and subseconds) to be set // - // Types that are assignable to PrecisionMode: + // Types that are valid to be assigned to PrecisionMode: // // *Expression_Literal_IntervalDayToSecond_Microseconds // *Expression_Literal_IntervalDayToSecond_Precision PrecisionMode isExpression_Literal_IntervalDayToSecond_PrecisionMode `protobuf_oneof:"precision_mode"` // the number of fractional seconds using 1e(-precision) units. Should only be used with precision field, not microseconds. - Subseconds int64 `protobuf:"varint,5,opt,name=subseconds,proto3" json:"subseconds,omitempty"` + Subseconds int64 `protobuf:"varint,5,opt,name=subseconds,proto3" json:"subseconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_IntervalDayToSecond) Reset() { *x = Expression_Literal_IntervalDayToSecond{} - mi := &file_substrait_algebra_proto_msgTypes[82] + mi := &file_substrait_algebra_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8438,7 +9157,7 @@ func (x *Expression_Literal_IntervalDayToSecond) String() string { func (*Expression_Literal_IntervalDayToSecond) ProtoMessage() {} func (x *Expression_Literal_IntervalDayToSecond) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[82] + mi := &file_substrait_algebra_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8451,7 +9170,7 @@ func (x *Expression_Literal_IntervalDayToSecond) ProtoReflect() protoreflect.Mes // Deprecated: Use Expression_Literal_IntervalDayToSecond.ProtoReflect.Descriptor instead. func (*Expression_Literal_IntervalDayToSecond) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 5} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 5} } func (x *Expression_Literal_IntervalDayToSecond) GetDays() int32 { @@ -8468,24 +9187,28 @@ func (x *Expression_Literal_IntervalDayToSecond) GetSeconds() int32 { return 0 } -func (m *Expression_Literal_IntervalDayToSecond) GetPrecisionMode() isExpression_Literal_IntervalDayToSecond_PrecisionMode { - if m != nil { - return m.PrecisionMode +func (x *Expression_Literal_IntervalDayToSecond) GetPrecisionMode() isExpression_Literal_IntervalDayToSecond_PrecisionMode { + if x != nil { + return x.PrecisionMode } return nil } // Deprecated: Marked as deprecated in substrait/algebra.proto. func (x *Expression_Literal_IntervalDayToSecond) GetMicroseconds() int32 { - if x, ok := x.GetPrecisionMode().(*Expression_Literal_IntervalDayToSecond_Microseconds); ok { - return x.Microseconds + if x != nil { + if x, ok := x.PrecisionMode.(*Expression_Literal_IntervalDayToSecond_Microseconds); ok { + return x.Microseconds + } } return 0 } func (x *Expression_Literal_IntervalDayToSecond) GetPrecision() int32 { - if x, ok := x.GetPrecisionMode().(*Expression_Literal_IntervalDayToSecond_Precision); ok { - return x.Precision + if x != nil { + if x, ok := x.PrecisionMode.(*Expression_Literal_IntervalDayToSecond_Precision); ok { + return x.Precision + } } return 0 } @@ -8518,17 +9241,16 @@ func (*Expression_Literal_IntervalDayToSecond_Precision) isExpression_Literal_In } type Expression_Literal_IntervalCompound struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` IntervalYearToMonth *Expression_Literal_IntervalYearToMonth `protobuf:"bytes,1,opt,name=interval_year_to_month,json=intervalYearToMonth,proto3" json:"interval_year_to_month,omitempty"` IntervalDayToSecond *Expression_Literal_IntervalDayToSecond `protobuf:"bytes,2,opt,name=interval_day_to_second,json=intervalDayToSecond,proto3" json:"interval_day_to_second,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_IntervalCompound) Reset() { *x = Expression_Literal_IntervalCompound{} - mi := &file_substrait_algebra_proto_msgTypes[83] + mi := &file_substrait_algebra_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8540,7 +9262,7 @@ func (x *Expression_Literal_IntervalCompound) String() string { func (*Expression_Literal_IntervalCompound) ProtoMessage() {} func (x *Expression_Literal_IntervalCompound) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[83] + mi := &file_substrait_algebra_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8553,7 +9275,7 @@ func (x *Expression_Literal_IntervalCompound) ProtoReflect() protoreflect.Messag // Deprecated: Use Expression_Literal_IntervalCompound.ProtoReflect.Descriptor instead. func (*Expression_Literal_IntervalCompound) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 6} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 6} } func (x *Expression_Literal_IntervalCompound) GetIntervalYearToMonth() *Expression_Literal_IntervalYearToMonth { @@ -8571,17 +9293,16 @@ func (x *Expression_Literal_IntervalCompound) GetIntervalDayToSecond() *Expressi } type Expression_Literal_Struct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A possibly heterogeneously typed list of literals - Fields []*Expression_Literal `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []*Expression_Literal `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_Struct) Reset() { *x = Expression_Literal_Struct{} - mi := &file_substrait_algebra_proto_msgTypes[84] + mi := &file_substrait_algebra_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8593,7 +9314,7 @@ func (x *Expression_Literal_Struct) String() string { func (*Expression_Literal_Struct) ProtoMessage() {} func (x *Expression_Literal_Struct) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[84] + mi := &file_substrait_algebra_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8606,7 +9327,7 @@ func (x *Expression_Literal_Struct) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_Struct.ProtoReflect.Descriptor instead. func (*Expression_Literal_Struct) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 7} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 7} } func (x *Expression_Literal_Struct) GetFields() []*Expression_Literal { @@ -8617,17 +9338,16 @@ func (x *Expression_Literal_Struct) GetFields() []*Expression_Literal { } type Expression_Literal_List struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A homogeneously typed list of literals - Values []*Expression_Literal `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + Values []*Expression_Literal `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_List) Reset() { *x = Expression_Literal_List{} - mi := &file_substrait_algebra_proto_msgTypes[85] + mi := &file_substrait_algebra_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8639,7 +9359,7 @@ func (x *Expression_Literal_List) String() string { func (*Expression_Literal_List) ProtoMessage() {} func (x *Expression_Literal_List) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[85] + mi := &file_substrait_algebra_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8652,7 +9372,7 @@ func (x *Expression_Literal_List) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_List.ProtoReflect.Descriptor instead. func (*Expression_Literal_List) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 8} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 8} } func (x *Expression_Literal_List) GetValues() []*Expression_Literal { @@ -8663,10 +9383,7 @@ func (x *Expression_Literal_List) GetValues() []*Expression_Literal { } type Expression_Literal_UserDefined struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // points to a type_anchor defined in this plan TypeReference uint32 `protobuf:"varint,1,opt,name=type_reference,json=typeReference,proto3" json:"type_reference,omitempty"` // The parameters to be bound to the type class, if the type class is @@ -8674,16 +9391,18 @@ type Expression_Literal_UserDefined struct { TypeParameters []*Type_Parameter `protobuf:"bytes,3,rep,name=type_parameters,json=typeParameters,proto3" json:"type_parameters,omitempty"` // a user-defined literal can be encoded in one of two ways // - // Types that are assignable to Val: + // Types that are valid to be assigned to Val: // // *Expression_Literal_UserDefined_Value // *Expression_Literal_UserDefined_Struct - Val isExpression_Literal_UserDefined_Val `protobuf_oneof:"val"` + Val isExpression_Literal_UserDefined_Val `protobuf_oneof:"val"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_UserDefined) Reset() { *x = Expression_Literal_UserDefined{} - mi := &file_substrait_algebra_proto_msgTypes[86] + mi := &file_substrait_algebra_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8695,7 +9414,7 @@ func (x *Expression_Literal_UserDefined) String() string { func (*Expression_Literal_UserDefined) ProtoMessage() {} func (x *Expression_Literal_UserDefined) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[86] + mi := &file_substrait_algebra_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8708,7 +9427,7 @@ func (x *Expression_Literal_UserDefined) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_UserDefined.ProtoReflect.Descriptor instead. func (*Expression_Literal_UserDefined) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 9} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 9} } func (x *Expression_Literal_UserDefined) GetTypeReference() uint32 { @@ -8725,23 +9444,27 @@ func (x *Expression_Literal_UserDefined) GetTypeParameters() []*Type_Parameter { return nil } -func (m *Expression_Literal_UserDefined) GetVal() isExpression_Literal_UserDefined_Val { - if m != nil { - return m.Val +func (x *Expression_Literal_UserDefined) GetVal() isExpression_Literal_UserDefined_Val { + if x != nil { + return x.Val } return nil } func (x *Expression_Literal_UserDefined) GetValue() *anypb.Any { - if x, ok := x.GetVal().(*Expression_Literal_UserDefined_Value); ok { - return x.Value + if x != nil { + if x, ok := x.Val.(*Expression_Literal_UserDefined_Value); ok { + return x.Value + } } return nil } func (x *Expression_Literal_UserDefined) GetStruct() *Expression_Literal_Struct { - if x, ok := x.GetVal().(*Expression_Literal_UserDefined_Struct); ok { - return x.Struct + if x != nil { + if x, ok := x.Val.(*Expression_Literal_UserDefined_Struct); ok { + return x.Struct + } } return nil } @@ -8765,17 +9488,16 @@ func (*Expression_Literal_UserDefined_Value) isExpression_Literal_UserDefined_Va func (*Expression_Literal_UserDefined_Struct) isExpression_Literal_UserDefined_Val() {} type Expression_Literal_Map_KeyValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key *Expression_Literal `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *Expression_Literal `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Key *Expression_Literal `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *Expression_Literal `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Literal_Map_KeyValue) Reset() { *x = Expression_Literal_Map_KeyValue{} - mi := &file_substrait_algebra_proto_msgTypes[87] + mi := &file_substrait_algebra_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8787,7 +9509,7 @@ func (x *Expression_Literal_Map_KeyValue) String() string { func (*Expression_Literal_Map_KeyValue) ProtoMessage() {} func (x *Expression_Literal_Map_KeyValue) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[87] + mi := &file_substrait_algebra_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8800,7 +9522,7 @@ func (x *Expression_Literal_Map_KeyValue) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Literal_Map_KeyValue.ProtoReflect.Descriptor instead. func (*Expression_Literal_Map_KeyValue) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 1, 3, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 1, 3, 0} } func (x *Expression_Literal_Map_KeyValue) GetKey() *Expression_Literal { @@ -8818,18 +9540,17 @@ func (x *Expression_Literal_Map_KeyValue) GetValue() *Expression_Literal { } type Expression_Nested_Map struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // One or more key-value pairs. To specify an empty map, use // Literal.empty_map (otherwise type information would be missing). - KeyValues []*Expression_Nested_Map_KeyValue `protobuf:"bytes,1,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` + KeyValues []*Expression_Nested_Map_KeyValue `protobuf:"bytes,1,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Nested_Map) Reset() { *x = Expression_Nested_Map{} - mi := &file_substrait_algebra_proto_msgTypes[88] + mi := &file_substrait_algebra_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8841,7 +9562,7 @@ func (x *Expression_Nested_Map) String() string { func (*Expression_Nested_Map) ProtoMessage() {} func (x *Expression_Nested_Map) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[88] + mi := &file_substrait_algebra_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8854,7 +9575,7 @@ func (x *Expression_Nested_Map) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Nested_Map.ProtoReflect.Descriptor instead. func (*Expression_Nested_Map) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 2, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 2, 0} } func (x *Expression_Nested_Map) GetKeyValues() []*Expression_Nested_Map_KeyValue { @@ -8865,18 +9586,17 @@ func (x *Expression_Nested_Map) GetKeyValues() []*Expression_Nested_Map_KeyValue } type Expression_Nested_Struct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Zero or more possibly heterogeneously-typed list of expressions that // form the struct fields. - Fields []*Expression `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []*Expression `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Nested_Struct) Reset() { *x = Expression_Nested_Struct{} - mi := &file_substrait_algebra_proto_msgTypes[89] + mi := &file_substrait_algebra_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8888,7 +9608,7 @@ func (x *Expression_Nested_Struct) String() string { func (*Expression_Nested_Struct) ProtoMessage() {} func (x *Expression_Nested_Struct) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[89] + mi := &file_substrait_algebra_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8901,7 +9621,7 @@ func (x *Expression_Nested_Struct) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Nested_Struct.ProtoReflect.Descriptor instead. func (*Expression_Nested_Struct) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 2, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 2, 1} } func (x *Expression_Nested_Struct) GetFields() []*Expression { @@ -8912,19 +9632,18 @@ func (x *Expression_Nested_Struct) GetFields() []*Expression { } type Expression_Nested_List struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A homogeneously-typed list of one or more expressions that form the // list entries. To specify an empty list, use Literal.empty_list // (otherwise type information would be missing). - Values []*Expression `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + Values []*Expression `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Nested_List) Reset() { *x = Expression_Nested_List{} - mi := &file_substrait_algebra_proto_msgTypes[90] + mi := &file_substrait_algebra_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8936,7 +9655,7 @@ func (x *Expression_Nested_List) String() string { func (*Expression_Nested_List) ProtoMessage() {} func (x *Expression_Nested_List) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[90] + mi := &file_substrait_algebra_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8949,7 +9668,7 @@ func (x *Expression_Nested_List) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Nested_List.ProtoReflect.Descriptor instead. func (*Expression_Nested_List) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 2, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 2, 2} } func (x *Expression_Nested_List) GetValues() []*Expression { @@ -8960,18 +9679,17 @@ func (x *Expression_Nested_List) GetValues() []*Expression { } type Expression_Nested_Map_KeyValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Mandatory key/value expressions. - Key *Expression `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *Expression `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Key *Expression `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *Expression `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Nested_Map_KeyValue) Reset() { *x = Expression_Nested_Map_KeyValue{} - mi := &file_substrait_algebra_proto_msgTypes[91] + mi := &file_substrait_algebra_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8983,7 +9701,7 @@ func (x *Expression_Nested_Map_KeyValue) String() string { func (*Expression_Nested_Map_KeyValue) ProtoMessage() {} func (x *Expression_Nested_Map_KeyValue) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[91] + mi := &file_substrait_algebra_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8996,7 +9714,7 @@ func (x *Expression_Nested_Map_KeyValue) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Nested_Map_KeyValue.ProtoReflect.Descriptor instead. func (*Expression_Nested_Map_KeyValue) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 2, 0, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 2, 0, 0} } func (x *Expression_Nested_Map_KeyValue) GetKey() *Expression { @@ -9015,22 +9733,21 @@ func (x *Expression_Nested_Map_KeyValue) GetValue() *Expression { // Defines one of the two boundaries for the window of a window function. type Expression_WindowFunction_Bound struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: // // *Expression_WindowFunction_Bound_Preceding_ // *Expression_WindowFunction_Bound_Following_ // *Expression_WindowFunction_Bound_CurrentRow_ // *Expression_WindowFunction_Bound_Unbounded_ - Kind isExpression_WindowFunction_Bound_Kind `protobuf_oneof:"kind"` + Kind isExpression_WindowFunction_Bound_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction_Bound) Reset() { *x = Expression_WindowFunction_Bound{} - mi := &file_substrait_algebra_proto_msgTypes[92] + mi := &file_substrait_algebra_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9042,7 +9759,7 @@ func (x *Expression_WindowFunction_Bound) String() string { func (*Expression_WindowFunction_Bound) ProtoMessage() {} func (x *Expression_WindowFunction_Bound) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[92] + mi := &file_substrait_algebra_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9055,40 +9772,48 @@ func (x *Expression_WindowFunction_Bound) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_WindowFunction_Bound.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction_Bound) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0} } -func (m *Expression_WindowFunction_Bound) GetKind() isExpression_WindowFunction_Bound_Kind { - if m != nil { - return m.Kind +func (x *Expression_WindowFunction_Bound) GetKind() isExpression_WindowFunction_Bound_Kind { + if x != nil { + return x.Kind } return nil } func (x *Expression_WindowFunction_Bound) GetPreceding() *Expression_WindowFunction_Bound_Preceding { - if x, ok := x.GetKind().(*Expression_WindowFunction_Bound_Preceding_); ok { - return x.Preceding + if x != nil { + if x, ok := x.Kind.(*Expression_WindowFunction_Bound_Preceding_); ok { + return x.Preceding + } } return nil } func (x *Expression_WindowFunction_Bound) GetFollowing() *Expression_WindowFunction_Bound_Following { - if x, ok := x.GetKind().(*Expression_WindowFunction_Bound_Following_); ok { - return x.Following + if x != nil { + if x, ok := x.Kind.(*Expression_WindowFunction_Bound_Following_); ok { + return x.Following + } } return nil } func (x *Expression_WindowFunction_Bound) GetCurrentRow() *Expression_WindowFunction_Bound_CurrentRow { - if x, ok := x.GetKind().(*Expression_WindowFunction_Bound_CurrentRow_); ok { - return x.CurrentRow + if x != nil { + if x, ok := x.Kind.(*Expression_WindowFunction_Bound_CurrentRow_); ok { + return x.CurrentRow + } } return nil } func (x *Expression_WindowFunction_Bound) GetUnbounded() *Expression_WindowFunction_Bound_Unbounded { - if x, ok := x.GetKind().(*Expression_WindowFunction_Bound_Unbounded_); ok { - return x.Unbounded + if x != nil { + if x, ok := x.Kind.(*Expression_WindowFunction_Bound_Unbounded_); ok { + return x.Unbounded + } } return nil } @@ -9130,19 +9855,18 @@ func (*Expression_WindowFunction_Bound_Unbounded_) isExpression_WindowFunction_B // Defines that the bound extends this far back from the current record. type Expression_WindowFunction_Bound_Preceding struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A strictly positive integer specifying the number of records that // the window extends back from the current record. Required. Use // CurrentRow for offset zero and Following for negative offsets. - Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction_Bound_Preceding) Reset() { *x = Expression_WindowFunction_Bound_Preceding{} - mi := &file_substrait_algebra_proto_msgTypes[93] + mi := &file_substrait_algebra_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9154,7 +9878,7 @@ func (x *Expression_WindowFunction_Bound_Preceding) String() string { func (*Expression_WindowFunction_Bound_Preceding) ProtoMessage() {} func (x *Expression_WindowFunction_Bound_Preceding) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[93] + mi := &file_substrait_algebra_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9167,7 +9891,7 @@ func (x *Expression_WindowFunction_Bound_Preceding) ProtoReflect() protoreflect. // Deprecated: Use Expression_WindowFunction_Bound_Preceding.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction_Bound_Preceding) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0, 0} } func (x *Expression_WindowFunction_Bound_Preceding) GetOffset() int64 { @@ -9179,19 +9903,18 @@ func (x *Expression_WindowFunction_Bound_Preceding) GetOffset() int64 { // Defines that the bound extends this far ahead of the current record. type Expression_WindowFunction_Bound_Following struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A strictly positive integer specifying the number of records that // the window extends ahead of the current record. Required. Use // CurrentRow for offset zero and Preceding for negative offsets. - Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction_Bound_Following) Reset() { *x = Expression_WindowFunction_Bound_Following{} - mi := &file_substrait_algebra_proto_msgTypes[94] + mi := &file_substrait_algebra_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9203,7 +9926,7 @@ func (x *Expression_WindowFunction_Bound_Following) String() string { func (*Expression_WindowFunction_Bound_Following) ProtoMessage() {} func (x *Expression_WindowFunction_Bound_Following) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[94] + mi := &file_substrait_algebra_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9216,7 +9939,7 @@ func (x *Expression_WindowFunction_Bound_Following) ProtoReflect() protoreflect. // Deprecated: Use Expression_WindowFunction_Bound_Following.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction_Bound_Following) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0, 1} } func (x *Expression_WindowFunction_Bound_Following) GetOffset() int64 { @@ -9228,14 +9951,14 @@ func (x *Expression_WindowFunction_Bound_Following) GetOffset() int64 { // Defines that the bound extends to or from the current record. type Expression_WindowFunction_Bound_CurrentRow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction_Bound_CurrentRow) Reset() { *x = Expression_WindowFunction_Bound_CurrentRow{} - mi := &file_substrait_algebra_proto_msgTypes[95] + mi := &file_substrait_algebra_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9247,7 +9970,7 @@ func (x *Expression_WindowFunction_Bound_CurrentRow) String() string { func (*Expression_WindowFunction_Bound_CurrentRow) ProtoMessage() {} func (x *Expression_WindowFunction_Bound_CurrentRow) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[95] + mi := &file_substrait_algebra_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9260,21 +9983,21 @@ func (x *Expression_WindowFunction_Bound_CurrentRow) ProtoReflect() protoreflect // Deprecated: Use Expression_WindowFunction_Bound_CurrentRow.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction_Bound_CurrentRow) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0, 2} } // Defines an "unbounded bound": for lower bounds this means the start // of the partition, and for upper bounds this means the end of the // partition. type Expression_WindowFunction_Bound_Unbounded struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_WindowFunction_Bound_Unbounded) Reset() { *x = Expression_WindowFunction_Bound_Unbounded{} - mi := &file_substrait_algebra_proto_msgTypes[96] + mi := &file_substrait_algebra_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9286,7 +10009,7 @@ func (x *Expression_WindowFunction_Bound_Unbounded) String() string { func (*Expression_WindowFunction_Bound_Unbounded) ProtoMessage() {} func (x *Expression_WindowFunction_Bound_Unbounded) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[96] + mi := &file_substrait_algebra_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9299,21 +10022,20 @@ func (x *Expression_WindowFunction_Bound_Unbounded) ProtoReflect() protoreflect. // Deprecated: Use Expression_WindowFunction_Bound_Unbounded.ProtoReflect.Descriptor instead. func (*Expression_WindowFunction_Bound_Unbounded) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 4, 0, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 4, 0, 3} } type Expression_IfThen_IfClause struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + If *Expression `protobuf:"bytes,1,opt,name=if,proto3" json:"if,omitempty"` + Then *Expression `protobuf:"bytes,2,opt,name=then,proto3" json:"then,omitempty"` unknownFields protoimpl.UnknownFields - - If *Expression `protobuf:"bytes,1,opt,name=if,proto3" json:"if,omitempty"` - Then *Expression `protobuf:"bytes,2,opt,name=then,proto3" json:"then,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_IfThen_IfClause) Reset() { *x = Expression_IfThen_IfClause{} - mi := &file_substrait_algebra_proto_msgTypes[97] + mi := &file_substrait_algebra_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9325,7 +10047,7 @@ func (x *Expression_IfThen_IfClause) String() string { func (*Expression_IfThen_IfClause) ProtoMessage() {} func (x *Expression_IfThen_IfClause) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[97] + mi := &file_substrait_algebra_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9338,7 +10060,7 @@ func (x *Expression_IfThen_IfClause) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_IfThen_IfClause.ProtoReflect.Descriptor instead. func (*Expression_IfThen_IfClause) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 5, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 5, 0} } func (x *Expression_IfThen_IfClause) GetIf() *Expression { @@ -9356,17 +10078,16 @@ func (x *Expression_IfThen_IfClause) GetThen() *Expression { } type Expression_SwitchExpression_IfValue struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + If *Expression_Literal `protobuf:"bytes,1,opt,name=if,proto3" json:"if,omitempty"` + Then *Expression `protobuf:"bytes,2,opt,name=then,proto3" json:"then,omitempty"` unknownFields protoimpl.UnknownFields - - If *Expression_Literal `protobuf:"bytes,1,opt,name=if,proto3" json:"if,omitempty"` - Then *Expression `protobuf:"bytes,2,opt,name=then,proto3" json:"then,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_SwitchExpression_IfValue) Reset() { *x = Expression_SwitchExpression_IfValue{} - mi := &file_substrait_algebra_proto_msgTypes[98] + mi := &file_substrait_algebra_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9378,7 +10099,7 @@ func (x *Expression_SwitchExpression_IfValue) String() string { func (*Expression_SwitchExpression_IfValue) ProtoMessage() {} func (x *Expression_SwitchExpression_IfValue) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[98] + mi := &file_substrait_algebra_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9391,7 +10112,7 @@ func (x *Expression_SwitchExpression_IfValue) ProtoReflect() protoreflect.Messag // Deprecated: Use Expression_SwitchExpression_IfValue.ProtoReflect.Descriptor instead. func (*Expression_SwitchExpression_IfValue) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 7, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 7, 0} } func (x *Expression_SwitchExpression_IfValue) GetIf() *Expression_Literal { @@ -9409,16 +10130,15 @@ func (x *Expression_SwitchExpression_IfValue) GetThen() *Expression { } type Expression_MultiOrList_Record struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*Expression `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []*Expression `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MultiOrList_Record) Reset() { *x = Expression_MultiOrList_Record{} - mi := &file_substrait_algebra_proto_msgTypes[99] + mi := &file_substrait_algebra_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9430,7 +10150,7 @@ func (x *Expression_MultiOrList_Record) String() string { func (*Expression_MultiOrList_Record) ProtoMessage() {} func (x *Expression_MultiOrList_Record) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[99] + mi := &file_substrait_algebra_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9443,7 +10163,7 @@ func (x *Expression_MultiOrList_Record) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_MultiOrList_Record.ProtoReflect.Descriptor instead. func (*Expression_MultiOrList_Record) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 9, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 9, 0} } func (x *Expression_MultiOrList_Record) GetFields() []*Expression { @@ -9454,17 +10174,16 @@ func (x *Expression_MultiOrList_Record) GetFields() []*Expression { } type Expression_EmbeddedFunction_PythonPickleFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Function []byte `protobuf:"bytes,1,opt,name=function,proto3" json:"function,omitempty"` + Prerequisite []string `protobuf:"bytes,2,rep,name=prerequisite,proto3" json:"prerequisite,omitempty"` unknownFields protoimpl.UnknownFields - - Function []byte `protobuf:"bytes,1,opt,name=function,proto3" json:"function,omitempty"` - Prerequisite []string `protobuf:"bytes,2,rep,name=prerequisite,proto3" json:"prerequisite,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_EmbeddedFunction_PythonPickleFunction) Reset() { *x = Expression_EmbeddedFunction_PythonPickleFunction{} - mi := &file_substrait_algebra_proto_msgTypes[100] + mi := &file_substrait_algebra_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9476,7 +10195,7 @@ func (x *Expression_EmbeddedFunction_PythonPickleFunction) String() string { func (*Expression_EmbeddedFunction_PythonPickleFunction) ProtoMessage() {} func (x *Expression_EmbeddedFunction_PythonPickleFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[100] + mi := &file_substrait_algebra_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9489,7 +10208,7 @@ func (x *Expression_EmbeddedFunction_PythonPickleFunction) ProtoReflect() protor // Deprecated: Use Expression_EmbeddedFunction_PythonPickleFunction.ProtoReflect.Descriptor instead. func (*Expression_EmbeddedFunction_PythonPickleFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 10, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 10, 0} } func (x *Expression_EmbeddedFunction_PythonPickleFunction) GetFunction() []byte { @@ -9507,17 +10226,16 @@ func (x *Expression_EmbeddedFunction_PythonPickleFunction) GetPrerequisite() []s } type Expression_EmbeddedFunction_WebAssemblyFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Script []byte `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` + Prerequisite []string `protobuf:"bytes,2,rep,name=prerequisite,proto3" json:"prerequisite,omitempty"` unknownFields protoimpl.UnknownFields - - Script []byte `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - Prerequisite []string `protobuf:"bytes,2,rep,name=prerequisite,proto3" json:"prerequisite,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_EmbeddedFunction_WebAssemblyFunction) Reset() { *x = Expression_EmbeddedFunction_WebAssemblyFunction{} - mi := &file_substrait_algebra_proto_msgTypes[101] + mi := &file_substrait_algebra_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9529,7 +10247,7 @@ func (x *Expression_EmbeddedFunction_WebAssemblyFunction) String() string { func (*Expression_EmbeddedFunction_WebAssemblyFunction) ProtoMessage() {} func (x *Expression_EmbeddedFunction_WebAssemblyFunction) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[101] + mi := &file_substrait_algebra_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9542,7 +10260,7 @@ func (x *Expression_EmbeddedFunction_WebAssemblyFunction) ProtoReflect() protore // Deprecated: Use Expression_EmbeddedFunction_WebAssemblyFunction.ProtoReflect.Descriptor instead. func (*Expression_EmbeddedFunction_WebAssemblyFunction) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 10, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 10, 1} } func (x *Expression_EmbeddedFunction_WebAssemblyFunction) GetScript() []byte { @@ -9560,19 +10278,18 @@ func (x *Expression_EmbeddedFunction_WebAssemblyFunction) GetPrerequisite() []st } type Expression_ReferenceSegment_MapKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // literal based reference to specific possible value in map. MapKey *Expression_Literal `protobuf:"bytes,1,opt,name=map_key,json=mapKey,proto3" json:"map_key,omitempty"` // Optional child segment - Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_ReferenceSegment_MapKey) Reset() { *x = Expression_ReferenceSegment_MapKey{} - mi := &file_substrait_algebra_proto_msgTypes[102] + mi := &file_substrait_algebra_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9584,7 +10301,7 @@ func (x *Expression_ReferenceSegment_MapKey) String() string { func (*Expression_ReferenceSegment_MapKey) ProtoMessage() {} func (x *Expression_ReferenceSegment_MapKey) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[102] + mi := &file_substrait_algebra_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9597,7 +10314,7 @@ func (x *Expression_ReferenceSegment_MapKey) ProtoReflect() protoreflect.Message // Deprecated: Use Expression_ReferenceSegment_MapKey.ProtoReflect.Descriptor instead. func (*Expression_ReferenceSegment_MapKey) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 11, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 11, 0} } func (x *Expression_ReferenceSegment_MapKey) GetMapKey() *Expression_Literal { @@ -9615,19 +10332,18 @@ func (x *Expression_ReferenceSegment_MapKey) GetChild() *Expression_ReferenceSeg } type Expression_ReferenceSegment_StructField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // zero-indexed ordinal position of field in struct Field int32 `protobuf:"varint,1,opt,name=field,proto3" json:"field,omitempty"` // Optional child segment - Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_ReferenceSegment_StructField) Reset() { *x = Expression_ReferenceSegment_StructField{} - mi := &file_substrait_algebra_proto_msgTypes[103] + mi := &file_substrait_algebra_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9639,7 +10355,7 @@ func (x *Expression_ReferenceSegment_StructField) String() string { func (*Expression_ReferenceSegment_StructField) ProtoMessage() {} func (x *Expression_ReferenceSegment_StructField) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[103] + mi := &file_substrait_algebra_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9652,7 +10368,7 @@ func (x *Expression_ReferenceSegment_StructField) ProtoReflect() protoreflect.Me // Deprecated: Use Expression_ReferenceSegment_StructField.ProtoReflect.Descriptor instead. func (*Expression_ReferenceSegment_StructField) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 11, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 11, 1} } func (x *Expression_ReferenceSegment_StructField) GetField() int32 { @@ -9670,19 +10386,18 @@ func (x *Expression_ReferenceSegment_StructField) GetChild() *Expression_Referen } type Expression_ReferenceSegment_ListElement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // zero-indexed ordinal position of element in list Offset int32 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` // Optional child segment - Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + Child *Expression_ReferenceSegment `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_ReferenceSegment_ListElement) Reset() { *x = Expression_ReferenceSegment_ListElement{} - mi := &file_substrait_algebra_proto_msgTypes[104] + mi := &file_substrait_algebra_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9694,7 +10409,7 @@ func (x *Expression_ReferenceSegment_ListElement) String() string { func (*Expression_ReferenceSegment_ListElement) ProtoMessage() {} func (x *Expression_ReferenceSegment_ListElement) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[104] + mi := &file_substrait_algebra_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9707,7 +10422,7 @@ func (x *Expression_ReferenceSegment_ListElement) ProtoReflect() protoreflect.Me // Deprecated: Use Expression_ReferenceSegment_ListElement.ProtoReflect.Descriptor instead. func (*Expression_ReferenceSegment_ListElement) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 11, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 11, 2} } func (x *Expression_ReferenceSegment_ListElement) GetOffset() int32 { @@ -9725,21 +10440,20 @@ func (x *Expression_ReferenceSegment_ListElement) GetChild() *Expression_Referen } type Expression_MaskExpression_Select struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *Expression_MaskExpression_Select_Struct // *Expression_MaskExpression_Select_List // *Expression_MaskExpression_Select_Map - Type isExpression_MaskExpression_Select_Type `protobuf_oneof:"type"` + Type isExpression_MaskExpression_Select_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_Select) Reset() { *x = Expression_MaskExpression_Select{} - mi := &file_substrait_algebra_proto_msgTypes[105] + mi := &file_substrait_algebra_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9751,7 +10465,7 @@ func (x *Expression_MaskExpression_Select) String() string { func (*Expression_MaskExpression_Select) ProtoMessage() {} func (x *Expression_MaskExpression_Select) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[105] + mi := &file_substrait_algebra_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9764,33 +10478,39 @@ func (x *Expression_MaskExpression_Select) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_MaskExpression_Select.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_Select) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 0} } -func (m *Expression_MaskExpression_Select) GetType() isExpression_MaskExpression_Select_Type { - if m != nil { - return m.Type +func (x *Expression_MaskExpression_Select) GetType() isExpression_MaskExpression_Select_Type { + if x != nil { + return x.Type } return nil } func (x *Expression_MaskExpression_Select) GetStruct() *Expression_MaskExpression_StructSelect { - if x, ok := x.GetType().(*Expression_MaskExpression_Select_Struct); ok { - return x.Struct + if x != nil { + if x, ok := x.Type.(*Expression_MaskExpression_Select_Struct); ok { + return x.Struct + } } return nil } func (x *Expression_MaskExpression_Select) GetList() *Expression_MaskExpression_ListSelect { - if x, ok := x.GetType().(*Expression_MaskExpression_Select_List); ok { - return x.List + if x != nil { + if x, ok := x.Type.(*Expression_MaskExpression_Select_List); ok { + return x.List + } } return nil } func (x *Expression_MaskExpression_Select) GetMap() *Expression_MaskExpression_MapSelect { - if x, ok := x.GetType().(*Expression_MaskExpression_Select_Map); ok { - return x.Map + if x != nil { + if x, ok := x.Type.(*Expression_MaskExpression_Select_Map); ok { + return x.Map + } } return nil } @@ -9818,16 +10538,15 @@ func (*Expression_MaskExpression_Select_List) isExpression_MaskExpression_Select func (*Expression_MaskExpression_Select_Map) isExpression_MaskExpression_Select_Type() {} type Expression_MaskExpression_StructSelect struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + StructItems []*Expression_MaskExpression_StructItem `protobuf:"bytes,1,rep,name=struct_items,json=structItems,proto3" json:"struct_items,omitempty"` unknownFields protoimpl.UnknownFields - - StructItems []*Expression_MaskExpression_StructItem `protobuf:"bytes,1,rep,name=struct_items,json=structItems,proto3" json:"struct_items,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_StructSelect) Reset() { *x = Expression_MaskExpression_StructSelect{} - mi := &file_substrait_algebra_proto_msgTypes[106] + mi := &file_substrait_algebra_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9839,7 +10558,7 @@ func (x *Expression_MaskExpression_StructSelect) String() string { func (*Expression_MaskExpression_StructSelect) ProtoMessage() {} func (x *Expression_MaskExpression_StructSelect) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[106] + mi := &file_substrait_algebra_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9852,7 +10571,7 @@ func (x *Expression_MaskExpression_StructSelect) ProtoReflect() protoreflect.Mes // Deprecated: Use Expression_MaskExpression_StructSelect.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_StructSelect) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 1} } func (x *Expression_MaskExpression_StructSelect) GetStructItems() []*Expression_MaskExpression_StructItem { @@ -9863,17 +10582,16 @@ func (x *Expression_MaskExpression_StructSelect) GetStructItems() []*Expression_ } type Expression_MaskExpression_StructItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Field int32 `protobuf:"varint,1,opt,name=field,proto3" json:"field,omitempty"` + Child *Expression_MaskExpression_Select `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` unknownFields protoimpl.UnknownFields - - Field int32 `protobuf:"varint,1,opt,name=field,proto3" json:"field,omitempty"` - Child *Expression_MaskExpression_Select `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_StructItem) Reset() { *x = Expression_MaskExpression_StructItem{} - mi := &file_substrait_algebra_proto_msgTypes[107] + mi := &file_substrait_algebra_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9885,7 +10603,7 @@ func (x *Expression_MaskExpression_StructItem) String() string { func (*Expression_MaskExpression_StructItem) ProtoMessage() {} func (x *Expression_MaskExpression_StructItem) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[107] + mi := &file_substrait_algebra_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9898,7 +10616,7 @@ func (x *Expression_MaskExpression_StructItem) ProtoReflect() protoreflect.Messa // Deprecated: Use Expression_MaskExpression_StructItem.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_StructItem) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 2} } func (x *Expression_MaskExpression_StructItem) GetField() int32 { @@ -9916,17 +10634,16 @@ func (x *Expression_MaskExpression_StructItem) GetChild() *Expression_MaskExpres } type Expression_MaskExpression_ListSelect struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Selection []*Expression_MaskExpression_ListSelect_ListSelectItem `protobuf:"bytes,1,rep,name=selection,proto3" json:"selection,omitempty"` + Child *Expression_MaskExpression_Select `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` unknownFields protoimpl.UnknownFields - - Selection []*Expression_MaskExpression_ListSelect_ListSelectItem `protobuf:"bytes,1,rep,name=selection,proto3" json:"selection,omitempty"` - Child *Expression_MaskExpression_Select `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_ListSelect) Reset() { *x = Expression_MaskExpression_ListSelect{} - mi := &file_substrait_algebra_proto_msgTypes[108] + mi := &file_substrait_algebra_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9938,7 +10655,7 @@ func (x *Expression_MaskExpression_ListSelect) String() string { func (*Expression_MaskExpression_ListSelect) ProtoMessage() {} func (x *Expression_MaskExpression_ListSelect) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[108] + mi := &file_substrait_algebra_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9951,7 +10668,7 @@ func (x *Expression_MaskExpression_ListSelect) ProtoReflect() protoreflect.Messa // Deprecated: Use Expression_MaskExpression_ListSelect.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_ListSelect) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 3} } func (x *Expression_MaskExpression_ListSelect) GetSelection() []*Expression_MaskExpression_ListSelect_ListSelectItem { @@ -9969,21 +10686,20 @@ func (x *Expression_MaskExpression_ListSelect) GetChild() *Expression_MaskExpres } type Expression_MaskExpression_MapSelect struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Select: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Select: // // *Expression_MaskExpression_MapSelect_Key // *Expression_MaskExpression_MapSelect_Expression - Select isExpression_MaskExpression_MapSelect_Select `protobuf_oneof:"select"` - Child *Expression_MaskExpression_Select `protobuf:"bytes,3,opt,name=child,proto3" json:"child,omitempty"` + Select isExpression_MaskExpression_MapSelect_Select `protobuf_oneof:"select"` + Child *Expression_MaskExpression_Select `protobuf:"bytes,3,opt,name=child,proto3" json:"child,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_MapSelect) Reset() { *x = Expression_MaskExpression_MapSelect{} - mi := &file_substrait_algebra_proto_msgTypes[109] + mi := &file_substrait_algebra_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9995,7 +10711,7 @@ func (x *Expression_MaskExpression_MapSelect) String() string { func (*Expression_MaskExpression_MapSelect) ProtoMessage() {} func (x *Expression_MaskExpression_MapSelect) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[109] + mi := &file_substrait_algebra_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10008,26 +10724,30 @@ func (x *Expression_MaskExpression_MapSelect) ProtoReflect() protoreflect.Messag // Deprecated: Use Expression_MaskExpression_MapSelect.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_MapSelect) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 4} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 4} } -func (m *Expression_MaskExpression_MapSelect) GetSelect() isExpression_MaskExpression_MapSelect_Select { - if m != nil { - return m.Select +func (x *Expression_MaskExpression_MapSelect) GetSelect() isExpression_MaskExpression_MapSelect_Select { + if x != nil { + return x.Select } return nil } func (x *Expression_MaskExpression_MapSelect) GetKey() *Expression_MaskExpression_MapSelect_MapKey { - if x, ok := x.GetSelect().(*Expression_MaskExpression_MapSelect_Key); ok { - return x.Key + if x != nil { + if x, ok := x.Select.(*Expression_MaskExpression_MapSelect_Key); ok { + return x.Key + } } return nil } func (x *Expression_MaskExpression_MapSelect) GetExpression() *Expression_MaskExpression_MapSelect_MapKeyExpression { - if x, ok := x.GetSelect().(*Expression_MaskExpression_MapSelect_Expression); ok { - return x.Expression + if x != nil { + if x, ok := x.Select.(*Expression_MaskExpression_MapSelect_Expression); ok { + return x.Expression + } } return nil } @@ -10057,20 +10777,19 @@ func (*Expression_MaskExpression_MapSelect_Expression) isExpression_MaskExpressi } type Expression_MaskExpression_ListSelect_ListSelectItem struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Type: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Type: // // *Expression_MaskExpression_ListSelect_ListSelectItem_Item // *Expression_MaskExpression_ListSelect_ListSelectItem_Slice - Type isExpression_MaskExpression_ListSelect_ListSelectItem_Type `protobuf_oneof:"type"` + Type isExpression_MaskExpression_ListSelect_ListSelectItem_Type `protobuf_oneof:"type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_ListSelect_ListSelectItem) Reset() { *x = Expression_MaskExpression_ListSelect_ListSelectItem{} - mi := &file_substrait_algebra_proto_msgTypes[110] + mi := &file_substrait_algebra_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10082,7 +10801,7 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem) String() string { func (*Expression_MaskExpression_ListSelect_ListSelectItem) ProtoMessage() {} func (x *Expression_MaskExpression_ListSelect_ListSelectItem) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[110] + mi := &file_substrait_algebra_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10095,26 +10814,30 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem) ProtoReflect() pro // Deprecated: Use Expression_MaskExpression_ListSelect_ListSelectItem.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_ListSelect_ListSelectItem) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 3, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 3, 0} } -func (m *Expression_MaskExpression_ListSelect_ListSelectItem) GetType() isExpression_MaskExpression_ListSelect_ListSelectItem_Type { - if m != nil { - return m.Type +func (x *Expression_MaskExpression_ListSelect_ListSelectItem) GetType() isExpression_MaskExpression_ListSelect_ListSelectItem_Type { + if x != nil { + return x.Type } return nil } func (x *Expression_MaskExpression_ListSelect_ListSelectItem) GetItem() *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement { - if x, ok := x.GetType().(*Expression_MaskExpression_ListSelect_ListSelectItem_Item); ok { - return x.Item + if x != nil { + if x, ok := x.Type.(*Expression_MaskExpression_ListSelect_ListSelectItem_Item); ok { + return x.Item + } } return nil } func (x *Expression_MaskExpression_ListSelect_ListSelectItem) GetSlice() *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice { - if x, ok := x.GetType().(*Expression_MaskExpression_ListSelect_ListSelectItem_Slice); ok { - return x.Slice + if x != nil { + if x, ok := x.Type.(*Expression_MaskExpression_ListSelect_ListSelectItem_Slice); ok { + return x.Slice + } } return nil } @@ -10138,16 +10861,15 @@ func (*Expression_MaskExpression_ListSelect_ListSelectItem_Slice) isExpression_M } type Expression_MaskExpression_ListSelect_ListSelectItem_ListElement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Field int32 `protobuf:"varint,1,opt,name=field,proto3" json:"field,omitempty"` unknownFields protoimpl.UnknownFields - - Field int32 `protobuf:"varint,1,opt,name=field,proto3" json:"field,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) Reset() { *x = Expression_MaskExpression_ListSelect_ListSelectItem_ListElement{} - mi := &file_substrait_algebra_proto_msgTypes[111] + mi := &file_substrait_algebra_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10159,7 +10881,7 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) String func (*Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) ProtoMessage() {} func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[111] + mi := &file_substrait_algebra_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10172,7 +10894,7 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) ProtoR // Deprecated: Use Expression_MaskExpression_ListSelect_ListSelectItem_ListElement.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 3, 0, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 3, 0, 0} } func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) GetField() int32 { @@ -10183,17 +10905,16 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListElement) GetFie } type Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` unknownFields protoimpl.UnknownFields - - Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` - End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) Reset() { *x = Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice{} - mi := &file_substrait_algebra_proto_msgTypes[112] + mi := &file_substrait_algebra_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10205,7 +10926,7 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) String() func (*Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) ProtoMessage() {} func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[112] + mi := &file_substrait_algebra_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10218,7 +10939,7 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) ProtoRef // Deprecated: Use Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 3, 0, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 3, 0, 1} } func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) GetStart() int32 { @@ -10236,16 +10957,15 @@ func (x *Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice) GetEnd() } type Expression_MaskExpression_MapSelect_MapKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MapKey string `protobuf:"bytes,1,opt,name=map_key,json=mapKey,proto3" json:"map_key,omitempty"` unknownFields protoimpl.UnknownFields - - MapKey string `protobuf:"bytes,1,opt,name=map_key,json=mapKey,proto3" json:"map_key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_MapSelect_MapKey) Reset() { *x = Expression_MaskExpression_MapSelect_MapKey{} - mi := &file_substrait_algebra_proto_msgTypes[113] + mi := &file_substrait_algebra_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10257,7 +10977,7 @@ func (x *Expression_MaskExpression_MapSelect_MapKey) String() string { func (*Expression_MaskExpression_MapSelect_MapKey) ProtoMessage() {} func (x *Expression_MaskExpression_MapSelect_MapKey) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[113] + mi := &file_substrait_algebra_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10270,7 +10990,7 @@ func (x *Expression_MaskExpression_MapSelect_MapKey) ProtoReflect() protoreflect // Deprecated: Use Expression_MaskExpression_MapSelect_MapKey.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_MapSelect_MapKey) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 4, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 4, 0} } func (x *Expression_MaskExpression_MapSelect_MapKey) GetMapKey() string { @@ -10281,16 +11001,15 @@ func (x *Expression_MaskExpression_MapSelect_MapKey) GetMapKey() string { } type Expression_MaskExpression_MapSelect_MapKeyExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MapKeyExpression string `protobuf:"bytes,1,opt,name=map_key_expression,json=mapKeyExpression,proto3" json:"map_key_expression,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + MapKeyExpression string `protobuf:"bytes,1,opt,name=map_key_expression,json=mapKeyExpression,proto3" json:"map_key_expression,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) Reset() { *x = Expression_MaskExpression_MapSelect_MapKeyExpression{} - mi := &file_substrait_algebra_proto_msgTypes[114] + mi := &file_substrait_algebra_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10302,7 +11021,7 @@ func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) String() string { func (*Expression_MaskExpression_MapSelect_MapKeyExpression) ProtoMessage() {} func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[114] + mi := &file_substrait_algebra_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10315,7 +11034,7 @@ func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) ProtoReflect() pr // Deprecated: Use Expression_MaskExpression_MapSelect_MapKeyExpression.ProtoReflect.Descriptor instead. func (*Expression_MaskExpression_MapSelect_MapKeyExpression) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 12, 4, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 12, 4, 1} } func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) GetMapKeyExpression() string { @@ -10328,14 +11047,14 @@ func (x *Expression_MaskExpression_MapSelect_MapKeyExpression) GetMapKeyExpressi // Singleton that expresses this FieldReference is rooted off the root // incoming record type type Expression_FieldReference_RootReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_FieldReference_RootReference) Reset() { *x = Expression_FieldReference_RootReference{} - mi := &file_substrait_algebra_proto_msgTypes[115] + mi := &file_substrait_algebra_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10347,7 +11066,7 @@ func (x *Expression_FieldReference_RootReference) String() string { func (*Expression_FieldReference_RootReference) ProtoMessage() {} func (x *Expression_FieldReference_RootReference) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[115] + mi := &file_substrait_algebra_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10360,24 +11079,23 @@ func (x *Expression_FieldReference_RootReference) ProtoReflect() protoreflect.Me // Deprecated: Use Expression_FieldReference_RootReference.ProtoReflect.Descriptor instead. func (*Expression_FieldReference_RootReference) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 13, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 13, 0} } // A root reference for the outer relation's subquery type Expression_FieldReference_OuterReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // number of subquery boundaries to traverse up for this field's reference // // This value must be >= 1 - StepsOut uint32 `protobuf:"varint,1,opt,name=steps_out,json=stepsOut,proto3" json:"steps_out,omitempty"` + StepsOut uint32 `protobuf:"varint,1,opt,name=steps_out,json=stepsOut,proto3" json:"steps_out,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_FieldReference_OuterReference) Reset() { *x = Expression_FieldReference_OuterReference{} - mi := &file_substrait_algebra_proto_msgTypes[116] + mi := &file_substrait_algebra_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10389,7 +11107,7 @@ func (x *Expression_FieldReference_OuterReference) String() string { func (*Expression_FieldReference_OuterReference) ProtoMessage() {} func (x *Expression_FieldReference_OuterReference) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[116] + mi := &file_substrait_algebra_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10402,7 +11120,7 @@ func (x *Expression_FieldReference_OuterReference) ProtoReflect() protoreflect.M // Deprecated: Use Expression_FieldReference_OuterReference.ProtoReflect.Descriptor instead. func (*Expression_FieldReference_OuterReference) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 13, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 13, 1} } func (x *Expression_FieldReference_OuterReference) GetStepsOut() uint32 { @@ -10415,16 +11133,15 @@ func (x *Expression_FieldReference_OuterReference) GetStepsOut() uint32 { // A subquery with one row and one column. This is often an aggregate // though not required to be. type Expression_Subquery_Scalar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Input *Rel `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` unknownFields protoimpl.UnknownFields - - Input *Rel `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Subquery_Scalar) Reset() { *x = Expression_Subquery_Scalar{} - mi := &file_substrait_algebra_proto_msgTypes[117] + mi := &file_substrait_algebra_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10436,7 +11153,7 @@ func (x *Expression_Subquery_Scalar) String() string { func (*Expression_Subquery_Scalar) ProtoMessage() {} func (x *Expression_Subquery_Scalar) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[117] + mi := &file_substrait_algebra_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10449,7 +11166,7 @@ func (x *Expression_Subquery_Scalar) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Subquery_Scalar.ProtoReflect.Descriptor instead. func (*Expression_Subquery_Scalar) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 0} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 0} } func (x *Expression_Subquery_Scalar) GetInput() *Rel { @@ -10467,17 +11184,16 @@ func (x *Expression_Subquery_Scalar) GetInput() *Rel { // x IN (SELECT * FROM t) // (x, y) IN (SELECT a, b FROM t) type Expression_Subquery_InPredicate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Needles []*Expression `protobuf:"bytes,1,rep,name=needles,proto3" json:"needles,omitempty"` + Haystack *Rel `protobuf:"bytes,2,opt,name=haystack,proto3" json:"haystack,omitempty"` unknownFields protoimpl.UnknownFields - - Needles []*Expression `protobuf:"bytes,1,rep,name=needles,proto3" json:"needles,omitempty"` - Haystack *Rel `protobuf:"bytes,2,opt,name=haystack,proto3" json:"haystack,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Expression_Subquery_InPredicate) Reset() { *x = Expression_Subquery_InPredicate{} - mi := &file_substrait_algebra_proto_msgTypes[118] + mi := &file_substrait_algebra_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10489,7 +11205,7 @@ func (x *Expression_Subquery_InPredicate) String() string { func (*Expression_Subquery_InPredicate) ProtoMessage() {} func (x *Expression_Subquery_InPredicate) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[118] + mi := &file_substrait_algebra_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10502,7 +11218,7 @@ func (x *Expression_Subquery_InPredicate) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Subquery_InPredicate.ProtoReflect.Descriptor instead. func (*Expression_Subquery_InPredicate) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 1} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 1} } func (x *Expression_Subquery_InPredicate) GetNeedles() []*Expression { @@ -10522,18 +11238,17 @@ func (x *Expression_Subquery_InPredicate) GetHaystack() *Rel { // A predicate over a set of rows in the form of a subquery // EXISTS and UNIQUE are common SQL forms of this operation. type Expression_Subquery_SetPredicate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TODO: should allow expressions - PredicateOp Expression_Subquery_SetPredicate_PredicateOp `protobuf:"varint,1,opt,name=predicate_op,json=predicateOp,proto3,enum=substrait.Expression_Subquery_SetPredicate_PredicateOp" json:"predicate_op,omitempty"` - Tuples *Rel `protobuf:"bytes,2,opt,name=tuples,proto3" json:"tuples,omitempty"` + PredicateOp Expression_Subquery_SetPredicate_PredicateOp `protobuf:"varint,1,opt,name=predicate_op,json=predicateOp,proto3,enum=substrait.Expression_Subquery_SetPredicate_PredicateOp" json:"predicate_op,omitempty"` + Tuples *Rel `protobuf:"bytes,2,opt,name=tuples,proto3" json:"tuples,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Subquery_SetPredicate) Reset() { *x = Expression_Subquery_SetPredicate{} - mi := &file_substrait_algebra_proto_msgTypes[119] + mi := &file_substrait_algebra_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10545,7 +11260,7 @@ func (x *Expression_Subquery_SetPredicate) String() string { func (*Expression_Subquery_SetPredicate) ProtoMessage() {} func (x *Expression_Subquery_SetPredicate) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[119] + mi := &file_substrait_algebra_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10558,7 +11273,7 @@ func (x *Expression_Subquery_SetPredicate) ProtoReflect() protoreflect.Message { // Deprecated: Use Expression_Subquery_SetPredicate.ProtoReflect.Descriptor instead. func (*Expression_Subquery_SetPredicate) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 2} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 2} } func (x *Expression_Subquery_SetPredicate) GetPredicateOp() Expression_Subquery_SetPredicate_PredicateOp { @@ -10582,10 +11297,7 @@ func (x *Expression_Subquery_SetPredicate) GetTuples() *Rel { // FROM t1 // WHERE x < ANY(SELECT y from t2) type Expression_Subquery_SetComparison struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // ANY or ALL ReductionOp Expression_Subquery_SetComparison_ReductionOp `protobuf:"varint,1,opt,name=reduction_op,json=reductionOp,proto3,enum=substrait.Expression_Subquery_SetComparison_ReductionOp" json:"reduction_op,omitempty"` // A comparison operator @@ -10593,12 +11305,14 @@ type Expression_Subquery_SetComparison struct { // left side of the expression Left *Expression `protobuf:"bytes,3,opt,name=left,proto3" json:"left,omitempty"` // right side of the expression - Right *Rel `protobuf:"bytes,4,opt,name=right,proto3" json:"right,omitempty"` + Right *Rel `protobuf:"bytes,4,opt,name=right,proto3" json:"right,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Expression_Subquery_SetComparison) Reset() { *x = Expression_Subquery_SetComparison{} - mi := &file_substrait_algebra_proto_msgTypes[120] + mi := &file_substrait_algebra_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10610,7 +11324,7 @@ func (x *Expression_Subquery_SetComparison) String() string { func (*Expression_Subquery_SetComparison) ProtoMessage() {} func (x *Expression_Subquery_SetComparison) ProtoReflect() protoreflect.Message { - mi := &file_substrait_algebra_proto_msgTypes[120] + mi := &file_substrait_algebra_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10623,7 +11337,7 @@ func (x *Expression_Subquery_SetComparison) ProtoReflect() protoreflect.Message // Deprecated: Use Expression_Subquery_SetComparison.ProtoReflect.Descriptor instead. func (*Expression_Subquery_SetComparison) Descriptor() ([]byte, []int) { - return file_substrait_algebra_proto_rawDescGZIP(), []int{28, 14, 3} + return file_substrait_algebra_proto_rawDescGZIP(), []int{30, 14, 3} } func (x *Expression_Subquery_SetComparison) GetReductionOp() Expression_Subquery_SetComparison_ReductionOp { @@ -10757,7 +11471,7 @@ var file_substrait_algebra_proto_rawDesc = []byte{ 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x18, 0x43, 0x4f, 0x4d, 0x50, 0x55, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x8f, 0x4e, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x6d, 0x69, 0x74, 0x5f, - 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x92, 0x12, 0x0a, 0x07, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, + 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xdd, 0x14, 0x0a, 0x07, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x37, @@ -10799,779 +11513,903 @@ var file_substrait_algebra_proto_rawDesc = []byte{ 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x1a, 0x7a, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, - 0x97, 0x01, 0x0a, 0x0c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x40, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x0e, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x90, 0x0a, 0x0a, 0x0a, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, - 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x1a, 0xe8, 0x08, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x12, 0x1b, 0x0a, 0x08, 0x75, 0x72, 0x69, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x75, 0x72, 0x69, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, - 0x0a, 0x0d, 0x75, 0x72, 0x69, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x72, 0x69, 0x50, 0x61, 0x74, 0x68, - 0x47, 0x6c, 0x6f, 0x62, 0x12, 0x1b, 0x0a, 0x08, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x75, 0x72, 0x69, 0x46, 0x69, 0x6c, - 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x75, 0x72, 0x69, 0x46, 0x6f, 0x6c, 0x64, - 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x58, 0x0a, 0x07, 0x70, 0x61, 0x72, - 0x71, 0x75, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x61, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x71, - 0x75, 0x65, 0x74, 0x12, 0x52, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, + 0x62, 0x6c, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x49, + 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, + 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x7a, 0x0a, 0x0a, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x80, 0x02, 0x0a, 0x0c, 0x49, 0x63, 0x65, 0x62, + 0x65, 0x72, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x49, 0x63, 0x65, + 0x62, 0x65, 0x72, 0x67, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x1a, 0x95, 0x01, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x72, 0x69, 0x12, 0x21, 0x0a, 0x0b, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, + 0x2f, 0x0a, 0x12, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x11, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x0c, 0x0a, 0x0a, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x97, 0x01, 0x0a, 0x0c, 0x56, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, + 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x90, 0x0a, 0x0a, 0x0a, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x41, 0x72, - 0x72, 0x6f, 0x77, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, - 0x52, 0x05, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x12, 0x4c, 0x0a, 0x03, 0x6f, 0x72, 0x63, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xe8, 0x08, 0x0a, + 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x08, + 0x75, 0x72, 0x69, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x75, 0x72, 0x69, 0x50, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x75, 0x72, 0x69, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0b, 0x75, 0x72, 0x69, 0x50, 0x61, 0x74, 0x68, 0x47, 0x6c, 0x6f, 0x62, 0x12, + 0x1b, 0x0a, 0x08, 0x75, 0x72, 0x69, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x75, 0x72, 0x69, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0a, + 0x75, 0x72, 0x69, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x09, 0x75, 0x72, 0x69, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, + 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x58, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x12, 0x52, + 0x0a, 0x05, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x05, 0x61, 0x72, 0x72, + 0x6f, 0x77, 0x12, 0x4c, 0x0a, 0x03, 0x6f, 0x72, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4f, 0x72, 0x63, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x03, 0x6f, 0x72, 0x63, + 0x12, 0x34, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x01, 0x52, 0x09, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x04, 0x64, 0x77, 0x72, 0x66, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, - 0x4f, 0x72, 0x63, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, - 0x52, 0x03, 0x6f, 0x72, 0x63, 0x12, 0x34, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x01, - 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x04, 0x64, - 0x77, 0x72, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x77, 0x72, 0x66, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x04, 0x64, 0x77, 0x72, 0x66, 0x12, 0x61, 0x0a, 0x04, - 0x74, 0x65, 0x78, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, - 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x53, - 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x61, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x01, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x1a, - 0x14, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x12, 0x0a, 0x10, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x52, 0x65, - 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x0a, 0x0e, 0x4f, 0x72, 0x63, - 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x44, - 0x77, 0x72, 0x66, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa1, - 0x02, 0x0a, 0x21, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x53, 0x65, 0x70, 0x61, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, - 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x6e, - 0x65, 0x73, 0x54, 0x6f, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x73, 0x63, 0x61, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x12, 0x36, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, - 0x6c, 0x6c, 0x42, 0x0b, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x0d, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4a, 0x04, - 0x08, 0x05, 0x10, 0x06, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x0b, 0x0a, 0x09, - 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x0a, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x0b, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, + 0x44, 0x77, 0x72, 0x66, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, + 0x01, 0x52, 0x04, 0x64, 0x77, 0x72, 0x66, 0x12, 0x61, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x53, 0x65, 0x70, 0x61, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x48, 0x01, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x14, 0x0a, 0x12, 0x50, 0x61, + 0x72, 0x71, 0x75, 0x65, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x1a, 0x12, 0x0a, 0x10, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x0a, 0x0e, 0x4f, 0x72, 0x63, 0x52, 0x65, 0x61, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x44, 0x77, 0x72, 0x66, 0x52, 0x65, + 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa1, 0x02, 0x0a, 0x21, 0x44, 0x65, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x53, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x61, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, + 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x6d, 0x61, 0x78, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x11, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x54, 0x6f, 0x53, + 0x6b, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x15, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x5f, + 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x12, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x54, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x73, 0x4e, 0x75, 0x6c, 0x6c, + 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x42, 0x0b, 0x0a, + 0x09, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x22, 0xf1, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, + 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x05, 0x0a, 0x07, 0x4a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, + 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xcd, 0x05, - 0x0a, 0x07, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, - 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x4a, - 0x6f, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0xc8, 0x02, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, - 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, - 0x53, 0x45, 0x4d, 0x49, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x06, 0x12, - 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, - 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, - 0x4d, 0x49, 0x10, 0x08, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x09, 0x12, 0x1a, - 0x0a, 0x16, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, - 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xda, 0x01, - 0x0a, 0x08, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0x0a, 0x08, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, - 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x83, 0x05, 0x0a, 0x0c, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, - 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x6c, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x6c, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, - 0x72, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, - 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, + 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x02, + 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, + 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, + 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, + 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x49, 0x4e, + 0x47, 0x4c, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x08, 0x12, + 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, + 0x48, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x49, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x49, 0x4e, + 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, 0x12, 0x18, + 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, + 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xda, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x6f, + 0x73, 0x73, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x8d, 0x01, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, - 0x6e, 0x67, 0x12, 0x4c, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x33, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x14, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x70, 0x0a, 0x07, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x82, 0x08, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, - 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xff, 0x02, 0x0a, 0x08, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, + 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, + 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1c, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x65, + 0x78, 0x70, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1a, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, + 0x01, 0x48, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, + 0x70, 0x72, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, + 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x83, 0x05, 0x0a, 0x0c, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x64, 0x0a, 0x10, - 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x2e, - 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, - 0x0a, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x1a, 0xd7, 0x04, 0x0a, 0x11, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x68, 0x61, - 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0a, - 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3e, 0x0a, 0x09, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, + 0x67, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x08, + 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x52, + 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x14, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, + 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x8d, 0x01, 0x0a, 0x08, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x70, 0x0a, 0x07, 0x4d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x12, 0x2d, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x82, 0x08, + 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x12, 0x2c, + 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x64, 0x0a, 0x10, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x14, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, + 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xd7, 0x04, 0x0a, 0x11, 0x57, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, + 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, + 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x61, + 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, + 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x31, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, + 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x50, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4b, 0x0a, - 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, - 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x50, 0x0a, 0x0b, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, 0xe1, 0x01, 0x0a, - 0x07, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x05, - 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, - 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0xec, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x12, 0x2c, + 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x07, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0xee, 0x03, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x12, 0x27, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x2e, - 0x53, 0x65, 0x74, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, - 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x8c, 0x02, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x12, 0x53, - 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, - 0x4e, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, - 0x18, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x53, 0x5f, 0x50, 0x52, - 0x49, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x53, - 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, - 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x45, 0x54, 0x5f, 0x4f, - 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, - 0x55, 0x4c, 0x54, 0x49, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x45, 0x54, - 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x08, 0x12, - 0x19, 0x0a, 0x15, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, - 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, - 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x06, - 0x22, 0x96, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x6e, 0x0a, 0x10, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, + 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, + 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x56, + 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xec, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, + 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, 0x03, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, + 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, + 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x02, 0x0a, 0x05, 0x53, 0x65, 0x74, 0x4f, + 0x70, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x54, + 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, + 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, + 0x4e, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x41, 0x4c, 0x4c, 0x10, + 0x07, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x55, + 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, + 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x03, 0x12, 0x20, 0x0a, + 0x1c, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x45, 0x54, 0x10, 0x04, 0x12, + 0x24, 0x0a, 0x20, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x53, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x53, 0x45, 0x54, 0x5f, + 0x41, 0x4c, 0x4c, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, + 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x10, 0x05, + 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x06, 0x22, 0x96, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x97, 0x01, 0x0a, 0x11, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x6c, 0x12, - 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x26, 0x0a, - 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x06, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x22, 0x9a, 0x09, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, + 0x6e, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, - 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x42, 0x79, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x44, - 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, - 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, + 0x97, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x9a, 0x09, 0x0a, 0x0b, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x27, 0x0a, + 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, - 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, - 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4d, - 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x4f, 0x0a, - 0x16, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x80, - 0x01, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, - 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x1a, 0x22, - 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x61, - 0x63, 0x74, 0x1a, 0x8a, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x32, 0x0a, 0x08, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, - 0x22, 0x94, 0x03, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x12, 0x2c, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0xaf, 0x01, 0x0a, - 0x0b, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x0f, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x10, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x42, 0x0c, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x47, - 0x0a, 0x0e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x12, 0x35, 0x0a, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x75, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x07, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x63, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x63, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, + 0x65, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x6f, + 0x62, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, + 0x6c, 0x2e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0a, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x09, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x12, + 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4d, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x1a, 0x4f, 0x0a, 0x16, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, + 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x80, 0x01, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x42, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, + 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, + 0x54, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x0b, 0x0a, 0x09, 0x42, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x1a, 0x22, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x65, 0x78, 0x61, 0x63, 0x74, 0x1a, 0x8a, 0x01, 0x0a, 0x0e, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x75, + 0x72, 0x69, 0x12, 0x32, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x94, 0x03, 0x0a, 0x09, 0x45, 0x78, 0x70, 0x61, 0x6e, + 0x64, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, - 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf8, - 0x08, 0x0a, 0x03, 0x52, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, - 0x12, 0x2e, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x2b, 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, - 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, + 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x2e, 0x45, + 0x78, 0x70, 0x61, 0x6e, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x1a, 0xaf, 0x01, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x6c, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x48, 0x00, 0x52, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x1a, 0x47, 0x0a, 0x0e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x22, 0x45, 0x0a, + 0x07, 0x52, 0x65, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x22, 0xa8, 0x09, 0x0a, 0x03, 0x52, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x04, + 0x72, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x66, 0x65, + 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x48, + 0x00, 0x52, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x04, + 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, - 0x12, 0x28, 0x0a, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, - 0x65, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, - 0x03, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x03, 0x73, 0x65, 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x12, 0x47, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x44, 0x0a, 0x0e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x52, 0x65, 0x6c, 0x48, 0x00, - 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x12, - 0x2b, 0x0a, 0x05, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, - 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x09, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x13, + 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x6f, 0x69, 0x6e, + 0x12, 0x31, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, + 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, + 0x44, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x61, + 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x61, + 0x66, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x65, 0x61, 0x66, 0x12, 0x2b, 0x0a, 0x05, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x12, 0x25, 0x0a, 0x03, 0x64, 0x64, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x44, 0x64, 0x6c, 0x52, - 0x65, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x64, 0x64, 0x6c, 0x12, 0x35, 0x0a, 0x09, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x4a, 0x6f, 0x69, - 0x6e, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x68, 0x61, 0x73, 0x68, 0x4a, 0x6f, 0x69, 0x6e, - 0x12, 0x38, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x09, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x48, 0x0a, 0x10, 0x6e, 0x65, - 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, - 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, - 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x34, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, - 0x6c, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2e, 0x0a, - 0x06, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, - 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x42, 0x0a, 0x0a, - 0x08, 0x72, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x0f, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xd2, 0x05, - 0x0a, 0x06, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x12, 0x40, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, - 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x47, 0x0a, 0x10, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4b, - 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x2e, 0x44, - 0x64, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x27, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x2e, - 0x44, 0x64, 0x6c, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x37, 0x0a, 0x0f, 0x76, 0x69, 0x65, - 0x77, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, - 0x65, 0x6c, 0x52, 0x0e, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, - 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x22, 0x52, 0x0a, 0x09, 0x44, 0x64, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, - 0x16, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x44, 0x4c, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x56, 0x49, - 0x45, 0x57, 0x10, 0x02, 0x22, 0x8d, 0x01, 0x0a, 0x05, 0x44, 0x64, 0x6c, 0x4f, 0x70, 0x12, 0x16, - 0x0a, 0x12, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, - 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x44, 0x4c, - 0x5f, 0x4f, 0x50, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x52, 0x45, - 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x44, 0x4c, 0x5f, 0x4f, - 0x50, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x44, 0x4c, - 0x5f, 0x4f, 0x50, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x44, - 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x49, 0x46, 0x5f, 0x45, 0x58, 0x49, - 0x53, 0x54, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xf2, 0x04, 0x0a, 0x08, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x12, - 0x3e, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, + 0x2e, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x63, 0x72, 0x6f, + 0x73, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x48, + 0x00, 0x52, 0x05, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x03, 0x64, 0x64, 0x6c, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x03, 0x64, 0x64, 0x6c, 0x12, + 0x2e, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x35, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x68, 0x61, + 0x73, 0x68, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x0a, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, + 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, + 0x12, 0x48, 0x0a, 0x10, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x5f, + 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, + 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x34, 0x0a, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x65, 0x78, 0x70, + 0x61, 0x6e, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x80, 0x01, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, + 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, + 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x22, 0xd2, 0x05, 0x0a, 0x06, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x12, 0x40, + 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, - 0x45, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, - 0x65, 0x6c, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x24, - 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x07, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x70, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, - 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x45, - 0x52, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, - 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x11, - 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x43, 0x54, 0x41, 0x53, 0x10, - 0x04, 0x22, 0x66, 0x0a, 0x0a, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x1b, 0x0a, 0x17, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, - 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x4f, - 0x55, 0x54, 0x50, 0x55, 0x54, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x55, 0x54, 0x50, 0x55, - 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, - 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xbb, 0x04, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, - 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x4b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, - 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, - 0x1a, 0xa9, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, - 0x79, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0c, - 0x0a, 0x0a, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb6, 0x01, 0x0a, - 0x14, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x5f, - 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, - 0x19, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x51, 0x10, 0x01, 0x12, 0x2f, 0x0a, 0x2b, - 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, - 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x26, 0x0a, - 0x22, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x45, 0x51, - 0x55, 0x41, 0x4c, 0x10, 0x03, 0x22, 0xe0, 0x06, 0x0a, 0x0b, 0x48, 0x61, 0x73, 0x68, 0x4a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, - 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x45, 0x0a, - 0x09, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6b, 0x65, - 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x65, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x47, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4b, 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0d, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x33, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x44, 0x64, + 0x6c, 0x52, 0x65, 0x6c, 0x2e, 0x44, 0x64, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x44, + 0x64, 0x6c, 0x52, 0x65, 0x6c, 0x2e, 0x44, 0x64, 0x6c, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, + 0x37, 0x0a, 0x0f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x0e, 0x76, 0x69, 0x65, 0x77, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x09, 0x44, 0x64, 0x6c, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x02, 0x22, 0x8d, 0x01, 0x0a, 0x05, 0x44, + 0x64, 0x6c, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, + 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, + 0x1c, 0x0a, 0x18, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x5f, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, + 0x0f, 0x0a, 0x0b, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x04, + 0x12, 0x18, 0x0a, 0x14, 0x44, 0x44, 0x4c, 0x5f, 0x4f, 0x50, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x49, 0x46, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x05, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe7, 0x06, 0x0a, 0x08, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0c, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, + 0x52, 0x02, 0x6f, 0x70, 0x12, 0x24, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6c, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x22, 0x75, 0x0a, 0x07, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x12, 0x18, 0x0a, 0x14, + 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, + 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x57, + 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, + 0x12, 0x13, 0x0a, 0x0f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x4f, + 0x50, 0x5f, 0x43, 0x54, 0x41, 0x53, 0x10, 0x04, 0x22, 0xb1, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x46, 0x5f, 0x45, 0x58, + 0x49, 0x53, 0x54, 0x53, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x46, + 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x5f, + 0x49, 0x46, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x49, 0x46, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x04, 0x22, 0x66, 0x0a, 0x0a, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x55, + 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x55, 0x54, 0x50, 0x55, + 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, + 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, + 0x44, 0x53, 0x10, 0x02, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x93, 0x03, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, + 0x12, 0x38, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x33, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x0f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x79, + 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x7a, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x12, + 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x04, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x65, + 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x02, - 0x18, 0x01, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x30, 0x0a, - 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, - 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, - 0x3f, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x4a, - 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x02, - 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, - 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, - 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, - 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, - 0x54, 0x49, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x08, 0x12, 0x19, - 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, - 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x49, 0x4e, - 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, 0x12, 0x18, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, + 0x6c, 0x65, 0x66, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x4b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, + 0x65, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x1a, 0xa9, 0x01, + 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x2e, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3c, 0x0a, + 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x14, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, + 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x49, + 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x51, 0x10, 0x01, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x49, 0x4d, + 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, + 0x4e, 0x43, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x49, + 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, + 0x10, 0x03, 0x22, 0xe0, 0x06, 0x0a, 0x0b, 0x48, 0x61, 0x73, 0x68, 0x4a, 0x6f, 0x69, 0x6e, 0x52, + 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, + 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x04, + 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x65, + 0x66, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x4b, 0x65, 0x79, + 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x65, + 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, + 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x3f, 0x0a, 0x10, + 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, + 0x6f, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x33, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x4a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, + 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x02, 0x0a, 0x08, 0x4a, + 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x03, + 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, - 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xe2, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x72, - 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, - 0x6c, 0x65, 0x66, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, + 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, + 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, + 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x49, + 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, + 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4d, + 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xe2, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x4a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, + 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x45, + 0x0a, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6c, 0x65, 0x66, + 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6b, + 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x30, + 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, + 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, + 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0xc8, 0x02, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, + 0x45, 0x46, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, + 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, + 0x49, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x06, 0x12, 0x17, 0x0a, + 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, + 0x41, 0x4e, 0x54, 0x49, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x08, + 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, + 0x46, 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x4a, + 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, + 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, + 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, + 0x47, 0x48, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xa0, 0x05, 0x0a, 0x11, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, + 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x22, + 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x65, + 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4a, 0x6f, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, - 0x65, 0x79, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, - 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4d, - 0x65, 0x72, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, @@ -11598,870 +12436,828 @@ var file_substrait_algebra_proto_rawDesc = []byte{ 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0xa0, 0x05, - 0x0a, 0x11, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x6c, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x52, 0x65, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, - 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x65, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x4e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x2e, 0x4a, - 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, - 0x12, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x02, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, - 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, - 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x10, 0x04, - 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, - 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x45, 0x4d, - 0x49, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, - 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, - 0x41, 0x4e, 0x54, 0x49, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, - 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, - 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, - 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, - 0x22, 0x8a, 0x01, 0x0a, 0x10, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x44, 0x0a, - 0x0e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x22, 0xe8, 0x59, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x44, 0x0a, - 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x22, 0x8a, 0x01, + 0x0a, 0x10, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, + 0x0a, 0x08, 0x61, 0x72, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x44, 0x0a, 0x0e, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x22, 0xe8, 0x59, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x39, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, + 0x00, 0x52, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x09, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x74, 0x68, 0x65, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, - 0x54, 0x68, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x69, 0x66, 0x54, 0x68, 0x65, 0x6e, 0x12, 0x55, - 0x0a, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x10, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, - 0x72, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4f, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, - 0x72, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0d, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x30, 0x0a, 0x04, 0x63, 0x61, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x12, 0x36, 0x0a, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x48, 0x00, - 0x52, 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x1a, 0x8a, - 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, + 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x4f, 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x69, 0x66, 0x5f, 0x74, 0x68, 0x65, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, 0x54, 0x68, 0x65, + 0x6e, 0x48, 0x00, 0x52, 0x06, 0x69, 0x66, 0x54, 0x68, 0x65, 0x6e, 0x12, 0x55, 0x0a, 0x11, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x10, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6f, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, - 0x52, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x0b, 0x0a, - 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x3a, 0x02, 0x18, 0x01, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x0b, - 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0xa3, 0x16, 0x0a, 0x07, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, - 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, - 0x65, 0x61, 0x6e, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, - 0x00, 0x52, 0x02, 0x69, 0x38, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x31, 0x36, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x48, 0x00, 0x52, 0x03, 0x69, 0x31, 0x36, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x33, 0x32, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x03, 0x69, 0x33, 0x32, 0x12, 0x12, 0x0a, - 0x03, 0x69, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x69, 0x36, - 0x34, 0x12, 0x14, 0x0a, 0x04, 0x66, 0x70, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, - 0x00, 0x52, 0x04, 0x66, 0x70, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x04, 0x66, 0x70, 0x36, 0x34, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x04, 0x66, 0x70, 0x36, 0x34, 0x12, 0x18, 0x0a, - 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x12, 0x22, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x68, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x79, 0x65, - 0x61, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, - 0x6f, 0x6e, 0x74, 0x68, 0x48, 0x00, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x68, 0x0a, 0x16, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, + 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4f, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4f, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x0d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x6f, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x48, 0x00, - 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, - 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x63, 0x68, - 0x61, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x66, 0x69, 0x78, 0x65, - 0x64, 0x43, 0x68, 0x61, 0x72, 0x12, 0x42, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x5f, 0x63, 0x68, 0x61, - 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x43, 0x68, 0x61, 0x72, 0x48, 0x00, - 0x52, 0x07, 0x76, 0x61, 0x72, 0x43, 0x68, 0x61, 0x72, 0x12, 0x23, 0x0a, 0x0c, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x0b, 0x66, 0x69, 0x78, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x41, - 0x0a, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x44, - 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, - 0x6c, 0x12, 0x63, 0x0a, 0x13, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x6f, 0x6e, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x0b, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, + 0x04, 0x63, 0x61, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x61, 0x73, 0x74, 0x12, + 0x3c, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x36, 0x0a, + 0x06, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x42, + 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x04, 0x65, 0x6e, 0x75, 0x6d, 0x1a, 0x8a, 0x01, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x1a, 0x0b, 0x0a, 0x05, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x3a, 0x02, 0x18, 0x01, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x65, + 0x6e, 0x75, 0x6d, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0xa3, 0x16, 0x0a, 0x07, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, + 0x12, 0x10, 0x0a, 0x02, 0x69, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x02, + 0x69, 0x38, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x31, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, + 0x00, 0x52, 0x03, 0x69, 0x31, 0x36, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x33, 0x32, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x03, 0x69, 0x33, 0x32, 0x12, 0x12, 0x0a, 0x03, 0x69, 0x36, + 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x03, 0x69, 0x36, 0x34, 0x12, 0x14, + 0x0a, 0x04, 0x66, 0x70, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x04, + 0x66, 0x70, 0x33, 0x32, 0x12, 0x14, 0x0a, 0x04, 0x66, 0x70, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x00, 0x52, 0x04, 0x66, 0x70, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x22, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x68, + 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x50, 0x72, - 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x68, 0x0a, 0x16, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x7a, - 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x65, 0x63, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x7a, - 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, + 0x68, 0x48, 0x00, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, + 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x68, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x13, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x70, - 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x27, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x7a, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, - 0x01, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x7a, - 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x38, 0x0a, - 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x75, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, + 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, + 0x64, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, + 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x66, 0x69, 0x78, 0x65, 0x64, 0x43, 0x68, + 0x61, 0x72, 0x12, 0x42, 0x0a, 0x08, 0x76, 0x61, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x2e, 0x56, 0x61, 0x72, 0x43, 0x68, 0x61, 0x72, 0x48, 0x00, 0x52, 0x07, 0x76, + 0x61, 0x72, 0x43, 0x68, 0x61, 0x72, 0x12, 0x23, 0x0a, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, + 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, + 0x66, 0x69, 0x78, 0x65, 0x64, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x41, 0x0a, 0x07, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x44, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x63, + 0x0a, 0x13, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x09, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, - 0x0a, 0x09, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x4d, - 0x61, 0x70, 0x12, 0x4e, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, + 0x12, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x68, 0x0a, 0x16, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x7a, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x7a, 0x12, 0x3e, 0x0a, + 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, + 0x03, 0x6d, 0x61, 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, + 0x03, 0x6d, 0x61, 0x70, 0x12, 0x27, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x5f, 0x74, 0x7a, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, + 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x7a, 0x12, 0x14, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x32, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, - 0x0a, 0x18, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x16, 0x74, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x37, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x43, - 0x68, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x1a, 0x53, 0x0a, 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x1a, 0x48, 0x0a, 0x12, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, - 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x1a, 0xc2, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x09, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, + 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x12, + 0x4e, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x74, + 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x74, + 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x37, 0x0a, 0x07, 0x56, 0x61, 0x72, 0x43, 0x68, 0x61, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x1a, 0x53, + 0x0a, 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, + 0x61, 0x6c, 0x65, 0x1a, 0x48, 0x0a, 0x12, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xc2, 0x01, + 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x70, 0x2e, 0x4b, 0x65, 0x79, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x1a, 0x70, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x4d, 0x61, 0x70, 0x2e, - 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x1a, 0x70, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x2f, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x1a, 0x43, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, + 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x79, 0x65, 0x61, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x79, 0x65, 0x61, 0x72, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x1a, 0xbf, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, + 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x28, 0x0a, + 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x75, 0x62, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0xe2, 0x01, 0x0a, 0x10, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x66, + 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, + 0x68, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, + 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x66, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, + 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x1a, 0x3f, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, + 0x3d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0xed, + 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, + 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x42, 0x0e, + 0x0a, 0x0c, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xbf, + 0x04, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x74, 0x79, 0x70, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x37, + 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x43, 0x0a, 0x13, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, - 0x79, 0x65, 0x61, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x79, 0x65, 0x61, - 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x1a, 0xbf, 0x01, 0x0a, 0x13, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x12, 0x28, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x69, - 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x09, 0x70, 0x72, - 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, - 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, - 0x62, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x73, 0x75, 0x62, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x70, 0x72, - 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0xe2, 0x01, 0x0a, - 0x10, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, - 0x64, 0x12, 0x66, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x79, 0x65, - 0x61, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x54, 0x6f, 0x4d, - 0x6f, 0x6e, 0x74, 0x68, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x59, 0x65, - 0x61, 0x72, 0x54, 0x6f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x12, 0x66, 0x0a, 0x16, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0xb1, 0x01, + 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x48, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x13, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x61, 0x79, 0x54, 0x6f, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x1a, 0x3f, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x1a, 0x3d, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x1a, 0xed, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x74, 0x79, - 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, - 0x79, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x76, 0x61, - 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x1a, 0xbf, 0x04, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x74, 0x79, 0x70, 0x65, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x03, 0x6d, 0x61, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, - 0x1a, 0xb1, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x48, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x4d, 0x61, 0x70, 0x2e, 0x4b, - 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, + 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2e, 0x4d, 0x61, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, + 0x60, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x1a, 0x37, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x37, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x2d, - 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x35, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0x90, 0x02, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, + 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x35, 0x0a, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x1a, 0x90, 0x02, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, + 0x72, 0x67, 0x73, 0x1a, 0x91, 0x0a, 0x0a, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0x91, 0x0a, 0x0a, 0x0e, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x68, - 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, - 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x76, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, - 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, - 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, + 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6f, + 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, + 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x50, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2d, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0xd0, 0x03, 0x0a, + 0x05, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x54, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, + 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x54, 0x0a, 0x09, + 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x46, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, + 0x6e, 0x67, 0x12, 0x58, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, + 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x48, 0x00, + 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x12, 0x54, 0x0a, 0x09, + 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x55, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x65, 0x64, 0x1a, 0x23, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x23, 0x0a, 0x09, 0x46, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0c, 0x0a, 0x0a, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x1a, 0x0b, 0x0a, 0x09, 0x55, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, + 0x56, 0x0a, 0x0a, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, + 0x17, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x42, 0x4f, + 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x57, 0x53, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x1a, 0xca, 0x01, 0x0a, 0x06, 0x49, 0x66, 0x54, 0x68, + 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x03, 0x69, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, 0x54, 0x68, 0x65, 0x6e, 0x2e, 0x49, 0x66, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x03, 0x69, 0x66, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x65, + 0x6c, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x04, 0x65, 0x6c, 0x73, 0x65, 0x1a, 0x5c, 0x0a, 0x08, 0x49, 0x66, 0x43, 0x6c, 0x61, 0x75, + 0x73, 0x65, 0x12, 0x25, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, - 0xd0, 0x03, 0x0a, 0x05, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x54, 0x0a, 0x09, 0x70, 0x72, 0x65, - 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, - 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x54, 0x0a, 0x09, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x46, - 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6f, 0x6c, 0x6c, - 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x58, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, - 0x77, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x12, - 0x54, 0x0a, 0x09, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x55, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0x23, 0x0a, 0x09, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x23, 0x0a, 0x09, 0x46, 0x6f, - 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, - 0x0c, 0x0a, 0x0a, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x1a, 0x0b, 0x0a, - 0x09, 0x55, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, - 0x6e, 0x64, 0x22, 0x56, 0x0a, 0x0a, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x57, - 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x1a, 0xca, 0x01, 0x0a, 0x06, 0x49, - 0x66, 0x54, 0x68, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x03, 0x69, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, 0x54, 0x68, 0x65, 0x6e, - 0x2e, 0x49, 0x66, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x52, 0x03, 0x69, 0x66, 0x73, 0x12, 0x29, - 0x0a, 0x04, 0x65, 0x6c, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, 0x6c, 0x73, 0x65, 0x1a, 0x5c, 0x0a, 0x08, 0x49, 0x66, 0x43, - 0x6c, 0x61, 0x75, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x69, 0x66, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x68, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x74, 0x68, 0x65, 0x6e, 0x1a, 0xac, 0x02, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, 0x12, 0x23, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x69, 0x66, 0x12, 0x29, 0x0a, 0x04, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x55, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, 0x65, + 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x7b, 0x0a, 0x0f, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x46, 0x41, 0x49, + 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x46, + 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, + 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x24, 0x0a, + 0x20, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, + 0x52, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x57, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x02, 0x1a, 0x91, 0x02, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x03, 0x69, 0x66, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x65, 0x6c, 0x73, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, 0x6c, + 0x73, 0x65, 0x1a, 0x63, 0x0a, 0x07, 0x49, 0x66, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, + 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x02, 0x69, 0x66, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x68, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x04, 0x74, 0x68, 0x65, 0x6e, 0x1a, 0xac, 0x02, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, - 0x12, 0x23, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x55, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x7b, 0x0a, 0x0f, 0x46, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x1c, - 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, - 0x0a, 0x1c, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, - 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, - 0x12, 0x24, 0x0a, 0x20, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x42, 0x45, 0x48, 0x41, - 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x57, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x1a, 0x91, 0x02, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x05, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x03, 0x69, 0x66, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x66, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x69, 0x66, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x65, 0x6c, - 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x6e, 0x52, 0x04, 0x74, 0x68, 0x65, 0x6e, 0x1a, 0x6e, 0x0a, 0x0e, 0x53, 0x69, 0x6e, 0x67, 0x75, + 0x6c, 0x61, 0x72, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x04, 0x65, 0x6c, 0x73, 0x65, 0x1a, 0x63, 0x0a, 0x07, 0x49, 0x66, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x2d, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x02, 0x69, 0x66, 0x12, - 0x29, 0x0a, 0x04, 0x74, 0x68, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x68, 0x65, 0x6e, 0x1a, 0x6e, 0x0a, 0x0e, 0x53, 0x69, - 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xb7, 0x01, 0x0a, 0x0b, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xb7, 0x01, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x1a, 0x93, 0x04, 0x0a, 0x10, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x06, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x93, 0x04, 0x0a, 0x10, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, - 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, - 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x73, 0x0a, 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x6c, - 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, - 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x14, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x46, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x70, 0x0a, 0x15, 0x77, 0x65, 0x62, 0x5f, 0x61, 0x73, 0x73, - 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6d, 0x62, 0x65, - 0x64, 0x64, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, - 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x13, 0x77, 0x65, 0x62, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x56, 0x0a, 0x14, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x50, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, + 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x73, 0x0a, + 0x16, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x5f, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, 0x64, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x69, 0x63, 0x6b, + 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x14, 0x70, 0x79, + 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x70, 0x0a, 0x15, 0x77, 0x65, 0x62, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, + 0x6c, 0x79, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x65, + 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x65, 0x62, 0x41, 0x73, 0x73, + 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x13, 0x77, 0x65, 0x62, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x56, 0x0a, 0x14, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x69, + 0x63, 0x6b, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, + 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x1a, 0x51, 0x0a, 0x13, + 0x57, 0x65, 0x62, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x1a, - 0x51, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x46, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x22, - 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, - 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0xe8, 0x04, 0x0a, 0x10, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x48, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x48, - 0x00, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x12, 0x57, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, - 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7e, 0x0a, 0x06, 0x4d, - 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x3c, 0x0a, - 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x42, + 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0xe8, 0x04, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x07, + 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x06, + 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x61, 0x0a, 0x0b, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x63, - 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xa2, 0x0b, 0x0a, 0x0e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x06, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f, - 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x53, - 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x1a, 0xe8, 0x01, - 0x0a, 0x06, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, - 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x03, - 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, + 0x57, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x69, 0x73, + 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x7e, 0x0a, 0x06, 0x4d, 0x61, 0x70, 0x4b, + 0x65, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4d, 0x61, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, - 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x62, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x65, 0x0a, 0x0a, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x12, 0x41, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x05, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x1a, 0xe6, 0x03, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x12, 0x5c, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x61, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3c, 0x0a, + 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x63, 0x0a, 0x0b, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x1a, 0xa2, 0x0b, 0x0a, 0x0e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, - 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x41, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x05, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x1a, 0xb6, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x60, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x12, 0x38, 0x0a, 0x18, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x6e, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x16, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x6e, 0x67, + 0x75, 0x6c, 0x61, 0x72, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x1a, 0xe8, 0x01, 0x0a, 0x06, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, + 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x03, 0x6d, 0x61, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, + 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x70, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x42, 0x06, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x62, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0b, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x65, 0x0a, 0x0a, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, + 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x1a, 0xe6, 0x03, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, + 0x5c, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, + 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x1a, 0xb6, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x60, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x4a, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x74, 0x65, + 0x6d, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x60, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x60, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, - 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x63, - 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x1a, 0x23, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x1a, - 0x33, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x65, 0x6e, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xeb, 0x02, 0x0a, - 0x09, 0x4d, 0x61, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x49, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, - 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, - 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x48, 0x00, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x61, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x1a, 0x23, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x33, 0x0a, 0x09, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, + 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xeb, 0x02, 0x0a, 0x09, 0x4d, 0x61, + 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x49, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x61, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, + 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x70, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x21, 0x0a, 0x06, 0x4d, 0x61, 0x70, 0x4b, + 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x1a, 0x40, 0x0a, 0x10, 0x4d, + 0x61, 0x70, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, 0x70, + 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, + 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x1a, 0x8d, 0x04, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0f, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x51, 0x0a, 0x10, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x4d, 0x61, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, - 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x1a, 0x21, 0x0a, 0x06, 0x4d, - 0x61, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x1a, 0x40, - 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x6d, 0x61, 0x70, 0x4b, 0x65, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x08, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x1a, 0x8d, 0x04, 0x0a, 0x0e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x53, 0x0a, - 0x10, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, + 0x2e, 0x4d, 0x61, 0x73, 0x6b, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, + 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, + 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x72, + 0x6f, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 0x6f, 0x6f, 0x74, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x2d, 0x0a, 0x0e, 0x4f, 0x75, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x74, 0x65, 0x70, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, + 0x73, 0x74, 0x65, 0x70, 0x73, 0x4f, 0x75, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x6f, + 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x95, 0x0a, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, 0x52, 0x06, 0x73, + 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x4f, 0x0a, 0x0c, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, + 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, + 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0e, 0x73, 0x65, + 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, + 0x6e, 0x1a, 0x2e, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x24, 0x0a, 0x05, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x1a, 0x6a, 0x0a, 0x0b, 0x49, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x12, 0x2f, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x6c, 0x65, + 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x68, 0x61, 0x79, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x52, 0x65, 0x6c, 0x52, 0x08, 0x68, 0x61, 0x79, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x1a, 0xf1, 0x01, + 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x5a, + 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x70, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x52, 0x0b, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0b, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4f, + 0x70, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4f, + 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x13, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, + 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x45, 0x44, + 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x10, + 0x02, 0x1a, 0xaa, 0x04, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x48, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5b, - 0x0a, 0x0e, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x52, 0x6f, 0x6f, - 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x6f, - 0x6f, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x0f, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x0e, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, - 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x2d, 0x0a, 0x0e, - 0x4f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x73, 0x74, 0x65, 0x70, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x08, 0x73, 0x74, 0x65, 0x70, 0x73, 0x4f, 0x75, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, - 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x95, 0x0a, 0x0a, 0x08, 0x53, - 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x12, 0x5e, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x6f, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x48, 0x00, - 0x52, 0x06, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x4f, 0x0a, 0x0c, 0x69, 0x6e, 0x5f, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, + 0x4f, 0x70, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x4f, 0x70, + 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x49, - 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x0d, 0x73, 0x65, 0x74, - 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, - 0x0c, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, - 0x0e, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, - 0x73, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x69, 0x73, 0x6f, 0x6e, 0x1a, 0x2e, 0x0a, 0x06, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x12, 0x24, - 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x6a, 0x0a, 0x0b, 0x49, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6e, 0x65, 0x65, - 0x64, 0x6c, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x68, 0x61, 0x79, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x08, 0x68, 0x61, 0x79, 0x73, 0x74, 0x61, 0x63, 0x6b, - 0x1a, 0xf1, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x12, 0x5a, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6f, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, - 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4f, 0x70, - 0x52, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4f, 0x70, 0x12, 0x26, 0x0a, - 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x06, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0b, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x4f, 0x70, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, - 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, - 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, - 0x52, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x49, 0x51, - 0x55, 0x45, 0x10, 0x02, 0x1a, 0xaa, 0x04, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x73, - 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4f, 0x70, 0x12, 0x5e, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x5f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, - 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, - 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, - 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, - 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, - 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x51, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, - 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4e, 0x45, 0x10, 0x02, - 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, - 0x50, 0x5f, 0x4c, 0x54, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, - 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x47, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, - 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4c, 0x45, - 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, - 0x5f, 0x4f, 0x50, 0x5f, 0x47, 0x45, 0x10, 0x06, 0x22, 0x57, 0x0a, 0x0b, 0x52, 0x65, 0x64, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x44, 0x55, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x44, 0x55, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, - 0x45, 0x44, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x10, - 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xad, - 0x03, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x29, 0x0a, 0x04, - 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x75, 0x62, - 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x1d, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, - 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, - 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x4f, 0x52, 0x54, 0x5f, - 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x43, 0x5f, 0x4e, 0x55, - 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x4f, - 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, - 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x03, 0x12, - 0x22, 0x0a, 0x1e, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, - 0x54, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, - 0x05, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xcd, - 0x04, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x11, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, - 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, - 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x61, 0x73, - 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x73, - 0x6f, 0x72, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, - 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x47, 0x47, - 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x47, 0x47, - 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x10, 0x02, 0x22, 0x37, - 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x27, - 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, - 0x4f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x2a, 0xef, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x1d, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x24, 0x0a, 0x05, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, + 0x4f, 0x70, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, + 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, + 0x4f, 0x50, 0x5f, 0x45, 0x51, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, + 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, + 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4c, + 0x54, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, + 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x47, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, + 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4c, 0x45, 0x10, 0x05, 0x12, + 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, + 0x5f, 0x47, 0x45, 0x10, 0x06, 0x22, 0x57, 0x0a, 0x0b, 0x52, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4f, 0x70, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x44, 0x55, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x44, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4f, 0x50, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x44, 0x55, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x42, 0x0f, + 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xad, 0x03, 0x0a, 0x09, + 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x29, 0x0a, 0x04, 0x65, 0x78, 0x70, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x65, 0x78, 0x70, 0x72, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, + 0x61, 0x69, 0x74, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x53, 0x6f, + 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xdd, + 0x01, 0x0a, 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x46, 0x49, 0x52, + 0x53, 0x54, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, + 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x4f, 0x52, 0x54, 0x5f, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x5f, 0x4e, + 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, + 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, + 0x45, 0x53, 0x43, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x04, + 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x45, 0x44, 0x10, 0x05, 0x42, 0x0b, + 0x0a, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xcd, 0x04, 0x0a, 0x11, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x39, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, + 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, + 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x73, 0x6f, 0x72, 0x74, + 0x73, 0x12, 0x52, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, + 0x61, 0x72, 0x67, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x22, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, + 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x49, 0x53, 0x54, 0x49, 0x4e, 0x43, 0x54, 0x10, 0x02, 0x22, 0x37, 0x0a, 0x0c, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x73, + 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x74, 0x72, 0x65, 0x65, 0x4f, 0x72, 0x64, + 0x69, 0x6e, 0x61, 0x6c, 0x2a, 0xef, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x47, 0x47, + 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x2d, 0x0a, 0x29, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, - 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x32, - 0x0a, 0x2e, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x48, - 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, - 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, - 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, - 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x41, + 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x4f, - 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x04, 0x42, 0x57, 0x0a, 0x12, 0x69, 0x6f, 0x2e, - 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x75, - 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xaa, 0x02, 0x12, - 0x53, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, + 0x27, 0x0a, 0x23, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x5f, + 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x47, 0x47, 0x52, + 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x10, 0x04, 0x42, 0x57, 0x0a, 0x12, 0x69, 0x6f, 0x2e, 0x73, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x74, 0x2d, 0x69, 0x6f, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x61, 0x69, + 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0xaa, 0x02, 0x12, 0x53, 0x75, 0x62, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -12476,8 +13272,8 @@ func file_substrait_algebra_proto_rawDescGZIP() []byte { return file_substrait_algebra_proto_rawDescData } -var file_substrait_algebra_proto_enumTypes = make([]protoimpl.EnumInfo, 19) -var file_substrait_algebra_proto_msgTypes = make([]protoimpl.MessageInfo, 121) +var file_substrait_algebra_proto_enumTypes = make([]protoimpl.EnumInfo, 20) +var file_substrait_algebra_proto_msgTypes = make([]protoimpl.MessageInfo, 126) var file_substrait_algebra_proto_goTypes = []any{ (AggregationPhase)(0), // 0: substrait.AggregationPhase (RelCommon_Hint_ComputationType)(0), // 1: substrait.RelCommon.Hint.ComputationType @@ -12486,469 +13282,487 @@ var file_substrait_algebra_proto_goTypes = []any{ (DdlRel_DdlObject)(0), // 4: substrait.DdlRel.DdlObject (DdlRel_DdlOp)(0), // 5: substrait.DdlRel.DdlOp (WriteRel_WriteOp)(0), // 6: substrait.WriteRel.WriteOp - (WriteRel_OutputMode)(0), // 7: substrait.WriteRel.OutputMode - (ComparisonJoinKey_SimpleComparisonType)(0), // 8: substrait.ComparisonJoinKey.SimpleComparisonType - (HashJoinRel_JoinType)(0), // 9: substrait.HashJoinRel.JoinType - (MergeJoinRel_JoinType)(0), // 10: substrait.MergeJoinRel.JoinType - (NestedLoopJoinRel_JoinType)(0), // 11: substrait.NestedLoopJoinRel.JoinType - (Expression_WindowFunction_BoundsType)(0), // 12: substrait.Expression.WindowFunction.BoundsType - (Expression_Cast_FailureBehavior)(0), // 13: substrait.Expression.Cast.FailureBehavior - (Expression_Subquery_SetPredicate_PredicateOp)(0), // 14: substrait.Expression.Subquery.SetPredicate.PredicateOp - (Expression_Subquery_SetComparison_ComparisonOp)(0), // 15: substrait.Expression.Subquery.SetComparison.ComparisonOp - (Expression_Subquery_SetComparison_ReductionOp)(0), // 16: substrait.Expression.Subquery.SetComparison.ReductionOp - (SortField_SortDirection)(0), // 17: substrait.SortField.SortDirection - (AggregateFunction_AggregationInvocation)(0), // 18: substrait.AggregateFunction.AggregationInvocation - (*RelCommon)(nil), // 19: substrait.RelCommon - (*ReadRel)(nil), // 20: substrait.ReadRel - (*ProjectRel)(nil), // 21: substrait.ProjectRel - (*JoinRel)(nil), // 22: substrait.JoinRel - (*CrossRel)(nil), // 23: substrait.CrossRel - (*FetchRel)(nil), // 24: substrait.FetchRel - (*AggregateRel)(nil), // 25: substrait.AggregateRel - (*ConsistentPartitionWindowRel)(nil), // 26: substrait.ConsistentPartitionWindowRel - (*SortRel)(nil), // 27: substrait.SortRel - (*FilterRel)(nil), // 28: substrait.FilterRel - (*SetRel)(nil), // 29: substrait.SetRel - (*ExtensionSingleRel)(nil), // 30: substrait.ExtensionSingleRel - (*ExtensionLeafRel)(nil), // 31: substrait.ExtensionLeafRel - (*ExtensionMultiRel)(nil), // 32: substrait.ExtensionMultiRel - (*ExchangeRel)(nil), // 33: substrait.ExchangeRel - (*ExpandRel)(nil), // 34: substrait.ExpandRel - (*RelRoot)(nil), // 35: substrait.RelRoot - (*Rel)(nil), // 36: substrait.Rel - (*NamedObjectWrite)(nil), // 37: substrait.NamedObjectWrite - (*ExtensionObject)(nil), // 38: substrait.ExtensionObject - (*DdlRel)(nil), // 39: substrait.DdlRel - (*WriteRel)(nil), // 40: substrait.WriteRel - (*ComparisonJoinKey)(nil), // 41: substrait.ComparisonJoinKey - (*HashJoinRel)(nil), // 42: substrait.HashJoinRel - (*MergeJoinRel)(nil), // 43: substrait.MergeJoinRel - (*NestedLoopJoinRel)(nil), // 44: substrait.NestedLoopJoinRel - (*FunctionArgument)(nil), // 45: substrait.FunctionArgument - (*FunctionOption)(nil), // 46: substrait.FunctionOption - (*Expression)(nil), // 47: substrait.Expression - (*SortField)(nil), // 48: substrait.SortField - (*AggregateFunction)(nil), // 49: substrait.AggregateFunction - (*ReferenceRel)(nil), // 50: substrait.ReferenceRel - (*RelCommon_Direct)(nil), // 51: substrait.RelCommon.Direct - (*RelCommon_Emit)(nil), // 52: substrait.RelCommon.Emit - (*RelCommon_Hint)(nil), // 53: substrait.RelCommon.Hint - (*RelCommon_Hint_Stats)(nil), // 54: substrait.RelCommon.Hint.Stats - (*RelCommon_Hint_RuntimeConstraint)(nil), // 55: substrait.RelCommon.Hint.RuntimeConstraint - (*RelCommon_Hint_SavedComputation)(nil), // 56: substrait.RelCommon.Hint.SavedComputation - (*RelCommon_Hint_LoadedComputation)(nil), // 57: substrait.RelCommon.Hint.LoadedComputation - (*ReadRel_NamedTable)(nil), // 58: substrait.ReadRel.NamedTable - (*ReadRel_VirtualTable)(nil), // 59: substrait.ReadRel.VirtualTable - (*ReadRel_ExtensionTable)(nil), // 60: substrait.ReadRel.ExtensionTable - (*ReadRel_LocalFiles)(nil), // 61: substrait.ReadRel.LocalFiles - (*ReadRel_LocalFiles_FileOrFiles)(nil), // 62: substrait.ReadRel.LocalFiles.FileOrFiles - (*ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions)(nil), // 63: substrait.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptions - (*ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions)(nil), // 64: substrait.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptions - (*ReadRel_LocalFiles_FileOrFiles_OrcReadOptions)(nil), // 65: substrait.ReadRel.LocalFiles.FileOrFiles.OrcReadOptions - (*ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions)(nil), // 66: substrait.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptions - (*ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions)(nil), // 67: substrait.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptions - (*AggregateRel_Grouping)(nil), // 68: substrait.AggregateRel.Grouping - (*AggregateRel_Measure)(nil), // 69: substrait.AggregateRel.Measure - (*ConsistentPartitionWindowRel_WindowRelFunction)(nil), // 70: substrait.ConsistentPartitionWindowRel.WindowRelFunction - (*ExchangeRel_ScatterFields)(nil), // 71: substrait.ExchangeRel.ScatterFields - (*ExchangeRel_SingleBucketExpression)(nil), // 72: substrait.ExchangeRel.SingleBucketExpression - (*ExchangeRel_MultiBucketExpression)(nil), // 73: substrait.ExchangeRel.MultiBucketExpression - (*ExchangeRel_Broadcast)(nil), // 74: substrait.ExchangeRel.Broadcast - (*ExchangeRel_RoundRobin)(nil), // 75: substrait.ExchangeRel.RoundRobin - (*ExchangeRel_ExchangeTarget)(nil), // 76: substrait.ExchangeRel.ExchangeTarget - (*ExpandRel_ExpandField)(nil), // 77: substrait.ExpandRel.ExpandField - (*ExpandRel_SwitchingField)(nil), // 78: substrait.ExpandRel.SwitchingField - (*ComparisonJoinKey_ComparisonType)(nil), // 79: substrait.ComparisonJoinKey.ComparisonType - (*Expression_Enum)(nil), // 80: substrait.Expression.Enum - (*Expression_Literal)(nil), // 81: substrait.Expression.Literal - (*Expression_Nested)(nil), // 82: substrait.Expression.Nested - (*Expression_ScalarFunction)(nil), // 83: substrait.Expression.ScalarFunction - (*Expression_WindowFunction)(nil), // 84: substrait.Expression.WindowFunction - (*Expression_IfThen)(nil), // 85: substrait.Expression.IfThen - (*Expression_Cast)(nil), // 86: substrait.Expression.Cast - (*Expression_SwitchExpression)(nil), // 87: substrait.Expression.SwitchExpression - (*Expression_SingularOrList)(nil), // 88: substrait.Expression.SingularOrList - (*Expression_MultiOrList)(nil), // 89: substrait.Expression.MultiOrList - (*Expression_EmbeddedFunction)(nil), // 90: substrait.Expression.EmbeddedFunction - (*Expression_ReferenceSegment)(nil), // 91: substrait.Expression.ReferenceSegment - (*Expression_MaskExpression)(nil), // 92: substrait.Expression.MaskExpression - (*Expression_FieldReference)(nil), // 93: substrait.Expression.FieldReference - (*Expression_Subquery)(nil), // 94: substrait.Expression.Subquery - (*Expression_Enum_Empty)(nil), // 95: substrait.Expression.Enum.Empty - (*Expression_Literal_VarChar)(nil), // 96: substrait.Expression.Literal.VarChar - (*Expression_Literal_Decimal)(nil), // 97: substrait.Expression.Literal.Decimal - (*Expression_Literal_PrecisionTimestamp)(nil), // 98: substrait.Expression.Literal.PrecisionTimestamp - (*Expression_Literal_Map)(nil), // 99: substrait.Expression.Literal.Map - (*Expression_Literal_IntervalYearToMonth)(nil), // 100: substrait.Expression.Literal.IntervalYearToMonth - (*Expression_Literal_IntervalDayToSecond)(nil), // 101: substrait.Expression.Literal.IntervalDayToSecond - (*Expression_Literal_IntervalCompound)(nil), // 102: substrait.Expression.Literal.IntervalCompound - (*Expression_Literal_Struct)(nil), // 103: substrait.Expression.Literal.Struct - (*Expression_Literal_List)(nil), // 104: substrait.Expression.Literal.List - (*Expression_Literal_UserDefined)(nil), // 105: substrait.Expression.Literal.UserDefined - (*Expression_Literal_Map_KeyValue)(nil), // 106: substrait.Expression.Literal.Map.KeyValue - (*Expression_Nested_Map)(nil), // 107: substrait.Expression.Nested.Map - (*Expression_Nested_Struct)(nil), // 108: substrait.Expression.Nested.Struct - (*Expression_Nested_List)(nil), // 109: substrait.Expression.Nested.List - (*Expression_Nested_Map_KeyValue)(nil), // 110: substrait.Expression.Nested.Map.KeyValue - (*Expression_WindowFunction_Bound)(nil), // 111: substrait.Expression.WindowFunction.Bound - (*Expression_WindowFunction_Bound_Preceding)(nil), // 112: substrait.Expression.WindowFunction.Bound.Preceding - (*Expression_WindowFunction_Bound_Following)(nil), // 113: substrait.Expression.WindowFunction.Bound.Following - (*Expression_WindowFunction_Bound_CurrentRow)(nil), // 114: substrait.Expression.WindowFunction.Bound.CurrentRow - (*Expression_WindowFunction_Bound_Unbounded)(nil), // 115: substrait.Expression.WindowFunction.Bound.Unbounded - (*Expression_IfThen_IfClause)(nil), // 116: substrait.Expression.IfThen.IfClause - (*Expression_SwitchExpression_IfValue)(nil), // 117: substrait.Expression.SwitchExpression.IfValue - (*Expression_MultiOrList_Record)(nil), // 118: substrait.Expression.MultiOrList.Record - (*Expression_EmbeddedFunction_PythonPickleFunction)(nil), // 119: substrait.Expression.EmbeddedFunction.PythonPickleFunction - (*Expression_EmbeddedFunction_WebAssemblyFunction)(nil), // 120: substrait.Expression.EmbeddedFunction.WebAssemblyFunction - (*Expression_ReferenceSegment_MapKey)(nil), // 121: substrait.Expression.ReferenceSegment.MapKey - (*Expression_ReferenceSegment_StructField)(nil), // 122: substrait.Expression.ReferenceSegment.StructField - (*Expression_ReferenceSegment_ListElement)(nil), // 123: substrait.Expression.ReferenceSegment.ListElement - (*Expression_MaskExpression_Select)(nil), // 124: substrait.Expression.MaskExpression.Select - (*Expression_MaskExpression_StructSelect)(nil), // 125: substrait.Expression.MaskExpression.StructSelect - (*Expression_MaskExpression_StructItem)(nil), // 126: substrait.Expression.MaskExpression.StructItem - (*Expression_MaskExpression_ListSelect)(nil), // 127: substrait.Expression.MaskExpression.ListSelect - (*Expression_MaskExpression_MapSelect)(nil), // 128: substrait.Expression.MaskExpression.MapSelect - (*Expression_MaskExpression_ListSelect_ListSelectItem)(nil), // 129: substrait.Expression.MaskExpression.ListSelect.ListSelectItem - (*Expression_MaskExpression_ListSelect_ListSelectItem_ListElement)(nil), // 130: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListElement - (*Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice)(nil), // 131: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListSlice - (*Expression_MaskExpression_MapSelect_MapKey)(nil), // 132: substrait.Expression.MaskExpression.MapSelect.MapKey - (*Expression_MaskExpression_MapSelect_MapKeyExpression)(nil), // 133: substrait.Expression.MaskExpression.MapSelect.MapKeyExpression - (*Expression_FieldReference_RootReference)(nil), // 134: substrait.Expression.FieldReference.RootReference - (*Expression_FieldReference_OuterReference)(nil), // 135: substrait.Expression.FieldReference.OuterReference - (*Expression_Subquery_Scalar)(nil), // 136: substrait.Expression.Subquery.Scalar - (*Expression_Subquery_InPredicate)(nil), // 137: substrait.Expression.Subquery.InPredicate - (*Expression_Subquery_SetPredicate)(nil), // 138: substrait.Expression.Subquery.SetPredicate - (*Expression_Subquery_SetComparison)(nil), // 139: substrait.Expression.Subquery.SetComparison - (*extensions.AdvancedExtension)(nil), // 140: substrait.extensions.AdvancedExtension - (*NamedStruct)(nil), // 141: substrait.NamedStruct - (*anypb.Any)(nil), // 142: google.protobuf.Any - (*Type)(nil), // 143: substrait.Type - (*Type_List)(nil), // 144: substrait.Type.List - (*Type_Map)(nil), // 145: substrait.Type.Map - (*Type_Parameter)(nil), // 146: substrait.Type.Parameter + (WriteRel_CreateMode)(0), // 7: substrait.WriteRel.CreateMode + (WriteRel_OutputMode)(0), // 8: substrait.WriteRel.OutputMode + (ComparisonJoinKey_SimpleComparisonType)(0), // 9: substrait.ComparisonJoinKey.SimpleComparisonType + (HashJoinRel_JoinType)(0), // 10: substrait.HashJoinRel.JoinType + (MergeJoinRel_JoinType)(0), // 11: substrait.MergeJoinRel.JoinType + (NestedLoopJoinRel_JoinType)(0), // 12: substrait.NestedLoopJoinRel.JoinType + (Expression_WindowFunction_BoundsType)(0), // 13: substrait.Expression.WindowFunction.BoundsType + (Expression_Cast_FailureBehavior)(0), // 14: substrait.Expression.Cast.FailureBehavior + (Expression_Subquery_SetPredicate_PredicateOp)(0), // 15: substrait.Expression.Subquery.SetPredicate.PredicateOp + (Expression_Subquery_SetComparison_ComparisonOp)(0), // 16: substrait.Expression.Subquery.SetComparison.ComparisonOp + (Expression_Subquery_SetComparison_ReductionOp)(0), // 17: substrait.Expression.Subquery.SetComparison.ReductionOp + (SortField_SortDirection)(0), // 18: substrait.SortField.SortDirection + (AggregateFunction_AggregationInvocation)(0), // 19: substrait.AggregateFunction.AggregationInvocation + (*RelCommon)(nil), // 20: substrait.RelCommon + (*ReadRel)(nil), // 21: substrait.ReadRel + (*ProjectRel)(nil), // 22: substrait.ProjectRel + (*JoinRel)(nil), // 23: substrait.JoinRel + (*CrossRel)(nil), // 24: substrait.CrossRel + (*FetchRel)(nil), // 25: substrait.FetchRel + (*AggregateRel)(nil), // 26: substrait.AggregateRel + (*ConsistentPartitionWindowRel)(nil), // 27: substrait.ConsistentPartitionWindowRel + (*SortRel)(nil), // 28: substrait.SortRel + (*FilterRel)(nil), // 29: substrait.FilterRel + (*SetRel)(nil), // 30: substrait.SetRel + (*ExtensionSingleRel)(nil), // 31: substrait.ExtensionSingleRel + (*ExtensionLeafRel)(nil), // 32: substrait.ExtensionLeafRel + (*ExtensionMultiRel)(nil), // 33: substrait.ExtensionMultiRel + (*ExchangeRel)(nil), // 34: substrait.ExchangeRel + (*ExpandRel)(nil), // 35: substrait.ExpandRel + (*RelRoot)(nil), // 36: substrait.RelRoot + (*Rel)(nil), // 37: substrait.Rel + (*NamedObjectWrite)(nil), // 38: substrait.NamedObjectWrite + (*ExtensionObject)(nil), // 39: substrait.ExtensionObject + (*DdlRel)(nil), // 40: substrait.DdlRel + (*WriteRel)(nil), // 41: substrait.WriteRel + (*UpdateRel)(nil), // 42: substrait.UpdateRel + (*NamedTable)(nil), // 43: substrait.NamedTable + (*ComparisonJoinKey)(nil), // 44: substrait.ComparisonJoinKey + (*HashJoinRel)(nil), // 45: substrait.HashJoinRel + (*MergeJoinRel)(nil), // 46: substrait.MergeJoinRel + (*NestedLoopJoinRel)(nil), // 47: substrait.NestedLoopJoinRel + (*FunctionArgument)(nil), // 48: substrait.FunctionArgument + (*FunctionOption)(nil), // 49: substrait.FunctionOption + (*Expression)(nil), // 50: substrait.Expression + (*SortField)(nil), // 51: substrait.SortField + (*AggregateFunction)(nil), // 52: substrait.AggregateFunction + (*ReferenceRel)(nil), // 53: substrait.ReferenceRel + (*RelCommon_Direct)(nil), // 54: substrait.RelCommon.Direct + (*RelCommon_Emit)(nil), // 55: substrait.RelCommon.Emit + (*RelCommon_Hint)(nil), // 56: substrait.RelCommon.Hint + (*RelCommon_Hint_Stats)(nil), // 57: substrait.RelCommon.Hint.Stats + (*RelCommon_Hint_RuntimeConstraint)(nil), // 58: substrait.RelCommon.Hint.RuntimeConstraint + (*RelCommon_Hint_SavedComputation)(nil), // 59: substrait.RelCommon.Hint.SavedComputation + (*RelCommon_Hint_LoadedComputation)(nil), // 60: substrait.RelCommon.Hint.LoadedComputation + (*ReadRel_NamedTable)(nil), // 61: substrait.ReadRel.NamedTable + (*ReadRel_IcebergTable)(nil), // 62: substrait.ReadRel.IcebergTable + (*ReadRel_VirtualTable)(nil), // 63: substrait.ReadRel.VirtualTable + (*ReadRel_ExtensionTable)(nil), // 64: substrait.ReadRel.ExtensionTable + (*ReadRel_LocalFiles)(nil), // 65: substrait.ReadRel.LocalFiles + (*ReadRel_IcebergTable_MetadataFileRead)(nil), // 66: substrait.ReadRel.IcebergTable.MetadataFileRead + (*ReadRel_LocalFiles_FileOrFiles)(nil), // 67: substrait.ReadRel.LocalFiles.FileOrFiles + (*ReadRel_LocalFiles_FileOrFiles_ParquetReadOptions)(nil), // 68: substrait.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptions + (*ReadRel_LocalFiles_FileOrFiles_ArrowReadOptions)(nil), // 69: substrait.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptions + (*ReadRel_LocalFiles_FileOrFiles_OrcReadOptions)(nil), // 70: substrait.ReadRel.LocalFiles.FileOrFiles.OrcReadOptions + (*ReadRel_LocalFiles_FileOrFiles_DwrfReadOptions)(nil), // 71: substrait.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptions + (*ReadRel_LocalFiles_FileOrFiles_DelimiterSeparatedTextReadOptions)(nil), // 72: substrait.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptions + (*AggregateRel_Grouping)(nil), // 73: substrait.AggregateRel.Grouping + (*AggregateRel_Measure)(nil), // 74: substrait.AggregateRel.Measure + (*ConsistentPartitionWindowRel_WindowRelFunction)(nil), // 75: substrait.ConsistentPartitionWindowRel.WindowRelFunction + (*ExchangeRel_ScatterFields)(nil), // 76: substrait.ExchangeRel.ScatterFields + (*ExchangeRel_SingleBucketExpression)(nil), // 77: substrait.ExchangeRel.SingleBucketExpression + (*ExchangeRel_MultiBucketExpression)(nil), // 78: substrait.ExchangeRel.MultiBucketExpression + (*ExchangeRel_Broadcast)(nil), // 79: substrait.ExchangeRel.Broadcast + (*ExchangeRel_RoundRobin)(nil), // 80: substrait.ExchangeRel.RoundRobin + (*ExchangeRel_ExchangeTarget)(nil), // 81: substrait.ExchangeRel.ExchangeTarget + (*ExpandRel_ExpandField)(nil), // 82: substrait.ExpandRel.ExpandField + (*ExpandRel_SwitchingField)(nil), // 83: substrait.ExpandRel.SwitchingField + (*UpdateRel_TransformExpression)(nil), // 84: substrait.UpdateRel.TransformExpression + (*ComparisonJoinKey_ComparisonType)(nil), // 85: substrait.ComparisonJoinKey.ComparisonType + (*Expression_Enum)(nil), // 86: substrait.Expression.Enum + (*Expression_Literal)(nil), // 87: substrait.Expression.Literal + (*Expression_Nested)(nil), // 88: substrait.Expression.Nested + (*Expression_ScalarFunction)(nil), // 89: substrait.Expression.ScalarFunction + (*Expression_WindowFunction)(nil), // 90: substrait.Expression.WindowFunction + (*Expression_IfThen)(nil), // 91: substrait.Expression.IfThen + (*Expression_Cast)(nil), // 92: substrait.Expression.Cast + (*Expression_SwitchExpression)(nil), // 93: substrait.Expression.SwitchExpression + (*Expression_SingularOrList)(nil), // 94: substrait.Expression.SingularOrList + (*Expression_MultiOrList)(nil), // 95: substrait.Expression.MultiOrList + (*Expression_EmbeddedFunction)(nil), // 96: substrait.Expression.EmbeddedFunction + (*Expression_ReferenceSegment)(nil), // 97: substrait.Expression.ReferenceSegment + (*Expression_MaskExpression)(nil), // 98: substrait.Expression.MaskExpression + (*Expression_FieldReference)(nil), // 99: substrait.Expression.FieldReference + (*Expression_Subquery)(nil), // 100: substrait.Expression.Subquery + (*Expression_Enum_Empty)(nil), // 101: substrait.Expression.Enum.Empty + (*Expression_Literal_VarChar)(nil), // 102: substrait.Expression.Literal.VarChar + (*Expression_Literal_Decimal)(nil), // 103: substrait.Expression.Literal.Decimal + (*Expression_Literal_PrecisionTimestamp)(nil), // 104: substrait.Expression.Literal.PrecisionTimestamp + (*Expression_Literal_Map)(nil), // 105: substrait.Expression.Literal.Map + (*Expression_Literal_IntervalYearToMonth)(nil), // 106: substrait.Expression.Literal.IntervalYearToMonth + (*Expression_Literal_IntervalDayToSecond)(nil), // 107: substrait.Expression.Literal.IntervalDayToSecond + (*Expression_Literal_IntervalCompound)(nil), // 108: substrait.Expression.Literal.IntervalCompound + (*Expression_Literal_Struct)(nil), // 109: substrait.Expression.Literal.Struct + (*Expression_Literal_List)(nil), // 110: substrait.Expression.Literal.List + (*Expression_Literal_UserDefined)(nil), // 111: substrait.Expression.Literal.UserDefined + (*Expression_Literal_Map_KeyValue)(nil), // 112: substrait.Expression.Literal.Map.KeyValue + (*Expression_Nested_Map)(nil), // 113: substrait.Expression.Nested.Map + (*Expression_Nested_Struct)(nil), // 114: substrait.Expression.Nested.Struct + (*Expression_Nested_List)(nil), // 115: substrait.Expression.Nested.List + (*Expression_Nested_Map_KeyValue)(nil), // 116: substrait.Expression.Nested.Map.KeyValue + (*Expression_WindowFunction_Bound)(nil), // 117: substrait.Expression.WindowFunction.Bound + (*Expression_WindowFunction_Bound_Preceding)(nil), // 118: substrait.Expression.WindowFunction.Bound.Preceding + (*Expression_WindowFunction_Bound_Following)(nil), // 119: substrait.Expression.WindowFunction.Bound.Following + (*Expression_WindowFunction_Bound_CurrentRow)(nil), // 120: substrait.Expression.WindowFunction.Bound.CurrentRow + (*Expression_WindowFunction_Bound_Unbounded)(nil), // 121: substrait.Expression.WindowFunction.Bound.Unbounded + (*Expression_IfThen_IfClause)(nil), // 122: substrait.Expression.IfThen.IfClause + (*Expression_SwitchExpression_IfValue)(nil), // 123: substrait.Expression.SwitchExpression.IfValue + (*Expression_MultiOrList_Record)(nil), // 124: substrait.Expression.MultiOrList.Record + (*Expression_EmbeddedFunction_PythonPickleFunction)(nil), // 125: substrait.Expression.EmbeddedFunction.PythonPickleFunction + (*Expression_EmbeddedFunction_WebAssemblyFunction)(nil), // 126: substrait.Expression.EmbeddedFunction.WebAssemblyFunction + (*Expression_ReferenceSegment_MapKey)(nil), // 127: substrait.Expression.ReferenceSegment.MapKey + (*Expression_ReferenceSegment_StructField)(nil), // 128: substrait.Expression.ReferenceSegment.StructField + (*Expression_ReferenceSegment_ListElement)(nil), // 129: substrait.Expression.ReferenceSegment.ListElement + (*Expression_MaskExpression_Select)(nil), // 130: substrait.Expression.MaskExpression.Select + (*Expression_MaskExpression_StructSelect)(nil), // 131: substrait.Expression.MaskExpression.StructSelect + (*Expression_MaskExpression_StructItem)(nil), // 132: substrait.Expression.MaskExpression.StructItem + (*Expression_MaskExpression_ListSelect)(nil), // 133: substrait.Expression.MaskExpression.ListSelect + (*Expression_MaskExpression_MapSelect)(nil), // 134: substrait.Expression.MaskExpression.MapSelect + (*Expression_MaskExpression_ListSelect_ListSelectItem)(nil), // 135: substrait.Expression.MaskExpression.ListSelect.ListSelectItem + (*Expression_MaskExpression_ListSelect_ListSelectItem_ListElement)(nil), // 136: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListElement + (*Expression_MaskExpression_ListSelect_ListSelectItem_ListSlice)(nil), // 137: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListSlice + (*Expression_MaskExpression_MapSelect_MapKey)(nil), // 138: substrait.Expression.MaskExpression.MapSelect.MapKey + (*Expression_MaskExpression_MapSelect_MapKeyExpression)(nil), // 139: substrait.Expression.MaskExpression.MapSelect.MapKeyExpression + (*Expression_FieldReference_RootReference)(nil), // 140: substrait.Expression.FieldReference.RootReference + (*Expression_FieldReference_OuterReference)(nil), // 141: substrait.Expression.FieldReference.OuterReference + (*Expression_Subquery_Scalar)(nil), // 142: substrait.Expression.Subquery.Scalar + (*Expression_Subquery_InPredicate)(nil), // 143: substrait.Expression.Subquery.InPredicate + (*Expression_Subquery_SetPredicate)(nil), // 144: substrait.Expression.Subquery.SetPredicate + (*Expression_Subquery_SetComparison)(nil), // 145: substrait.Expression.Subquery.SetComparison + (*extensions.AdvancedExtension)(nil), // 146: substrait.extensions.AdvancedExtension + (*NamedStruct)(nil), // 147: substrait.NamedStruct + (*anypb.Any)(nil), // 148: google.protobuf.Any + (*Type)(nil), // 149: substrait.Type + (*Type_List)(nil), // 150: substrait.Type.List + (*Type_Map)(nil), // 151: substrait.Type.Map + (*Type_Parameter)(nil), // 152: substrait.Type.Parameter } var file_substrait_algebra_proto_depIdxs = []int32{ - 51, // 0: substrait.RelCommon.direct:type_name -> substrait.RelCommon.Direct - 52, // 1: substrait.RelCommon.emit:type_name -> substrait.RelCommon.Emit - 53, // 2: substrait.RelCommon.hint:type_name -> substrait.RelCommon.Hint - 140, // 3: substrait.RelCommon.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 4: substrait.ReadRel.common:type_name -> substrait.RelCommon - 141, // 5: substrait.ReadRel.base_schema:type_name -> substrait.NamedStruct - 47, // 6: substrait.ReadRel.filter:type_name -> substrait.Expression - 47, // 7: substrait.ReadRel.best_effort_filter:type_name -> substrait.Expression - 92, // 8: substrait.ReadRel.projection:type_name -> substrait.Expression.MaskExpression - 140, // 9: substrait.ReadRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 59, // 10: substrait.ReadRel.virtual_table:type_name -> substrait.ReadRel.VirtualTable - 61, // 11: substrait.ReadRel.local_files:type_name -> substrait.ReadRel.LocalFiles - 58, // 12: substrait.ReadRel.named_table:type_name -> substrait.ReadRel.NamedTable - 60, // 13: substrait.ReadRel.extension_table:type_name -> substrait.ReadRel.ExtensionTable - 19, // 14: substrait.ProjectRel.common:type_name -> substrait.RelCommon - 36, // 15: substrait.ProjectRel.input:type_name -> substrait.Rel - 47, // 16: substrait.ProjectRel.expressions:type_name -> substrait.Expression - 140, // 17: substrait.ProjectRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 18: substrait.JoinRel.common:type_name -> substrait.RelCommon - 36, // 19: substrait.JoinRel.left:type_name -> substrait.Rel - 36, // 20: substrait.JoinRel.right:type_name -> substrait.Rel - 47, // 21: substrait.JoinRel.expression:type_name -> substrait.Expression - 47, // 22: substrait.JoinRel.post_join_filter:type_name -> substrait.Expression - 2, // 23: substrait.JoinRel.type:type_name -> substrait.JoinRel.JoinType - 140, // 24: substrait.JoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 25: substrait.CrossRel.common:type_name -> substrait.RelCommon - 36, // 26: substrait.CrossRel.left:type_name -> substrait.Rel - 36, // 27: substrait.CrossRel.right:type_name -> substrait.Rel - 140, // 28: substrait.CrossRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 29: substrait.FetchRel.common:type_name -> substrait.RelCommon - 36, // 30: substrait.FetchRel.input:type_name -> substrait.Rel - 140, // 31: substrait.FetchRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 32: substrait.AggregateRel.common:type_name -> substrait.RelCommon - 36, // 33: substrait.AggregateRel.input:type_name -> substrait.Rel - 68, // 34: substrait.AggregateRel.groupings:type_name -> substrait.AggregateRel.Grouping - 69, // 35: substrait.AggregateRel.measures:type_name -> substrait.AggregateRel.Measure - 47, // 36: substrait.AggregateRel.grouping_expressions:type_name -> substrait.Expression - 140, // 37: substrait.AggregateRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 38: substrait.ConsistentPartitionWindowRel.common:type_name -> substrait.RelCommon - 36, // 39: substrait.ConsistentPartitionWindowRel.input:type_name -> substrait.Rel - 70, // 40: substrait.ConsistentPartitionWindowRel.window_functions:type_name -> substrait.ConsistentPartitionWindowRel.WindowRelFunction - 47, // 41: substrait.ConsistentPartitionWindowRel.partition_expressions:type_name -> substrait.Expression - 48, // 42: substrait.ConsistentPartitionWindowRel.sorts:type_name -> substrait.SortField - 140, // 43: substrait.ConsistentPartitionWindowRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 44: substrait.SortRel.common:type_name -> substrait.RelCommon - 36, // 45: substrait.SortRel.input:type_name -> substrait.Rel - 48, // 46: substrait.SortRel.sorts:type_name -> substrait.SortField - 140, // 47: substrait.SortRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 48: substrait.FilterRel.common:type_name -> substrait.RelCommon - 36, // 49: substrait.FilterRel.input:type_name -> substrait.Rel - 47, // 50: substrait.FilterRel.condition:type_name -> substrait.Expression - 140, // 51: substrait.FilterRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 52: substrait.SetRel.common:type_name -> substrait.RelCommon - 36, // 53: substrait.SetRel.inputs:type_name -> substrait.Rel - 3, // 54: substrait.SetRel.op:type_name -> substrait.SetRel.SetOp - 140, // 55: substrait.SetRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 56: substrait.ExtensionSingleRel.common:type_name -> substrait.RelCommon - 36, // 57: substrait.ExtensionSingleRel.input:type_name -> substrait.Rel - 142, // 58: substrait.ExtensionSingleRel.detail:type_name -> google.protobuf.Any - 19, // 59: substrait.ExtensionLeafRel.common:type_name -> substrait.RelCommon - 142, // 60: substrait.ExtensionLeafRel.detail:type_name -> google.protobuf.Any - 19, // 61: substrait.ExtensionMultiRel.common:type_name -> substrait.RelCommon - 36, // 62: substrait.ExtensionMultiRel.inputs:type_name -> substrait.Rel - 142, // 63: substrait.ExtensionMultiRel.detail:type_name -> google.protobuf.Any - 19, // 64: substrait.ExchangeRel.common:type_name -> substrait.RelCommon - 36, // 65: substrait.ExchangeRel.input:type_name -> substrait.Rel - 76, // 66: substrait.ExchangeRel.targets:type_name -> substrait.ExchangeRel.ExchangeTarget - 71, // 67: substrait.ExchangeRel.scatter_by_fields:type_name -> substrait.ExchangeRel.ScatterFields - 72, // 68: substrait.ExchangeRel.single_target:type_name -> substrait.ExchangeRel.SingleBucketExpression - 73, // 69: substrait.ExchangeRel.multi_target:type_name -> substrait.ExchangeRel.MultiBucketExpression - 75, // 70: substrait.ExchangeRel.round_robin:type_name -> substrait.ExchangeRel.RoundRobin - 74, // 71: substrait.ExchangeRel.broadcast:type_name -> substrait.ExchangeRel.Broadcast - 140, // 72: substrait.ExchangeRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 73: substrait.ExpandRel.common:type_name -> substrait.RelCommon - 36, // 74: substrait.ExpandRel.input:type_name -> substrait.Rel - 77, // 75: substrait.ExpandRel.fields:type_name -> substrait.ExpandRel.ExpandField - 36, // 76: substrait.RelRoot.input:type_name -> substrait.Rel - 20, // 77: substrait.Rel.read:type_name -> substrait.ReadRel - 28, // 78: substrait.Rel.filter:type_name -> substrait.FilterRel - 24, // 79: substrait.Rel.fetch:type_name -> substrait.FetchRel - 25, // 80: substrait.Rel.aggregate:type_name -> substrait.AggregateRel - 27, // 81: substrait.Rel.sort:type_name -> substrait.SortRel - 22, // 82: substrait.Rel.join:type_name -> substrait.JoinRel - 21, // 83: substrait.Rel.project:type_name -> substrait.ProjectRel - 29, // 84: substrait.Rel.set:type_name -> substrait.SetRel - 30, // 85: substrait.Rel.extension_single:type_name -> substrait.ExtensionSingleRel - 32, // 86: substrait.Rel.extension_multi:type_name -> substrait.ExtensionMultiRel - 31, // 87: substrait.Rel.extension_leaf:type_name -> substrait.ExtensionLeafRel - 23, // 88: substrait.Rel.cross:type_name -> substrait.CrossRel - 50, // 89: substrait.Rel.reference:type_name -> substrait.ReferenceRel - 40, // 90: substrait.Rel.write:type_name -> substrait.WriteRel - 39, // 91: substrait.Rel.ddl:type_name -> substrait.DdlRel - 42, // 92: substrait.Rel.hash_join:type_name -> substrait.HashJoinRel - 43, // 93: substrait.Rel.merge_join:type_name -> substrait.MergeJoinRel - 44, // 94: substrait.Rel.nested_loop_join:type_name -> substrait.NestedLoopJoinRel - 26, // 95: substrait.Rel.window:type_name -> substrait.ConsistentPartitionWindowRel - 33, // 96: substrait.Rel.exchange:type_name -> substrait.ExchangeRel - 34, // 97: substrait.Rel.expand:type_name -> substrait.ExpandRel - 140, // 98: substrait.NamedObjectWrite.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 142, // 99: substrait.ExtensionObject.detail:type_name -> google.protobuf.Any - 37, // 100: substrait.DdlRel.named_object:type_name -> substrait.NamedObjectWrite - 38, // 101: substrait.DdlRel.extension_object:type_name -> substrait.ExtensionObject - 141, // 102: substrait.DdlRel.table_schema:type_name -> substrait.NamedStruct - 103, // 103: substrait.DdlRel.table_defaults:type_name -> substrait.Expression.Literal.Struct - 4, // 104: substrait.DdlRel.object:type_name -> substrait.DdlRel.DdlObject - 5, // 105: substrait.DdlRel.op:type_name -> substrait.DdlRel.DdlOp - 36, // 106: substrait.DdlRel.view_definition:type_name -> substrait.Rel - 19, // 107: substrait.DdlRel.common:type_name -> substrait.RelCommon - 37, // 108: substrait.WriteRel.named_table:type_name -> substrait.NamedObjectWrite - 38, // 109: substrait.WriteRel.extension_table:type_name -> substrait.ExtensionObject - 141, // 110: substrait.WriteRel.table_schema:type_name -> substrait.NamedStruct - 6, // 111: substrait.WriteRel.op:type_name -> substrait.WriteRel.WriteOp - 36, // 112: substrait.WriteRel.input:type_name -> substrait.Rel - 7, // 113: substrait.WriteRel.output:type_name -> substrait.WriteRel.OutputMode - 19, // 114: substrait.WriteRel.common:type_name -> substrait.RelCommon - 93, // 115: substrait.ComparisonJoinKey.left:type_name -> substrait.Expression.FieldReference - 93, // 116: substrait.ComparisonJoinKey.right:type_name -> substrait.Expression.FieldReference - 79, // 117: substrait.ComparisonJoinKey.comparison:type_name -> substrait.ComparisonJoinKey.ComparisonType - 19, // 118: substrait.HashJoinRel.common:type_name -> substrait.RelCommon - 36, // 119: substrait.HashJoinRel.left:type_name -> substrait.Rel - 36, // 120: substrait.HashJoinRel.right:type_name -> substrait.Rel - 93, // 121: substrait.HashJoinRel.left_keys:type_name -> substrait.Expression.FieldReference - 93, // 122: substrait.HashJoinRel.right_keys:type_name -> substrait.Expression.FieldReference - 41, // 123: substrait.HashJoinRel.keys:type_name -> substrait.ComparisonJoinKey - 47, // 124: substrait.HashJoinRel.post_join_filter:type_name -> substrait.Expression - 9, // 125: substrait.HashJoinRel.type:type_name -> substrait.HashJoinRel.JoinType - 140, // 126: substrait.HashJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 127: substrait.MergeJoinRel.common:type_name -> substrait.RelCommon - 36, // 128: substrait.MergeJoinRel.left:type_name -> substrait.Rel - 36, // 129: substrait.MergeJoinRel.right:type_name -> substrait.Rel - 93, // 130: substrait.MergeJoinRel.left_keys:type_name -> substrait.Expression.FieldReference - 93, // 131: substrait.MergeJoinRel.right_keys:type_name -> substrait.Expression.FieldReference - 41, // 132: substrait.MergeJoinRel.keys:type_name -> substrait.ComparisonJoinKey - 47, // 133: substrait.MergeJoinRel.post_join_filter:type_name -> substrait.Expression - 10, // 134: substrait.MergeJoinRel.type:type_name -> substrait.MergeJoinRel.JoinType - 140, // 135: substrait.MergeJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 19, // 136: substrait.NestedLoopJoinRel.common:type_name -> substrait.RelCommon - 36, // 137: substrait.NestedLoopJoinRel.left:type_name -> substrait.Rel - 36, // 138: substrait.NestedLoopJoinRel.right:type_name -> substrait.Rel - 47, // 139: substrait.NestedLoopJoinRel.expression:type_name -> substrait.Expression - 11, // 140: substrait.NestedLoopJoinRel.type:type_name -> substrait.NestedLoopJoinRel.JoinType - 140, // 141: substrait.NestedLoopJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 143, // 142: substrait.FunctionArgument.type:type_name -> substrait.Type - 47, // 143: substrait.FunctionArgument.value:type_name -> substrait.Expression - 81, // 144: substrait.Expression.literal:type_name -> substrait.Expression.Literal - 93, // 145: substrait.Expression.selection:type_name -> substrait.Expression.FieldReference - 83, // 146: substrait.Expression.scalar_function:type_name -> substrait.Expression.ScalarFunction - 84, // 147: substrait.Expression.window_function:type_name -> substrait.Expression.WindowFunction - 85, // 148: substrait.Expression.if_then:type_name -> substrait.Expression.IfThen - 87, // 149: substrait.Expression.switch_expression:type_name -> substrait.Expression.SwitchExpression - 88, // 150: substrait.Expression.singular_or_list:type_name -> substrait.Expression.SingularOrList - 89, // 151: substrait.Expression.multi_or_list:type_name -> substrait.Expression.MultiOrList - 86, // 152: substrait.Expression.cast:type_name -> substrait.Expression.Cast - 94, // 153: substrait.Expression.subquery:type_name -> substrait.Expression.Subquery - 82, // 154: substrait.Expression.nested:type_name -> substrait.Expression.Nested - 80, // 155: substrait.Expression.enum:type_name -> substrait.Expression.Enum - 47, // 156: substrait.SortField.expr:type_name -> substrait.Expression - 17, // 157: substrait.SortField.direction:type_name -> substrait.SortField.SortDirection - 45, // 158: substrait.AggregateFunction.arguments:type_name -> substrait.FunctionArgument - 46, // 159: substrait.AggregateFunction.options:type_name -> substrait.FunctionOption - 143, // 160: substrait.AggregateFunction.output_type:type_name -> substrait.Type - 0, // 161: substrait.AggregateFunction.phase:type_name -> substrait.AggregationPhase - 48, // 162: substrait.AggregateFunction.sorts:type_name -> substrait.SortField - 18, // 163: substrait.AggregateFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation - 47, // 164: substrait.AggregateFunction.args:type_name -> substrait.Expression - 54, // 165: substrait.RelCommon.Hint.stats:type_name -> substrait.RelCommon.Hint.Stats - 55, // 166: substrait.RelCommon.Hint.constraint:type_name -> substrait.RelCommon.Hint.RuntimeConstraint - 140, // 167: substrait.RelCommon.Hint.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 56, // 168: substrait.RelCommon.Hint.saved_computations:type_name -> substrait.RelCommon.Hint.SavedComputation - 57, // 169: substrait.RelCommon.Hint.loaded_computations:type_name -> substrait.RelCommon.Hint.LoadedComputation - 140, // 170: substrait.RelCommon.Hint.Stats.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 140, // 171: substrait.RelCommon.Hint.RuntimeConstraint.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 1, // 172: substrait.RelCommon.Hint.SavedComputation.type:type_name -> substrait.RelCommon.Hint.ComputationType - 1, // 173: substrait.RelCommon.Hint.LoadedComputation.type:type_name -> substrait.RelCommon.Hint.ComputationType - 140, // 174: substrait.ReadRel.NamedTable.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 103, // 175: substrait.ReadRel.VirtualTable.values:type_name -> substrait.Expression.Literal.Struct - 108, // 176: substrait.ReadRel.VirtualTable.expressions:type_name -> substrait.Expression.Nested.Struct - 142, // 177: substrait.ReadRel.ExtensionTable.detail:type_name -> google.protobuf.Any - 62, // 178: substrait.ReadRel.LocalFiles.items:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles - 140, // 179: substrait.ReadRel.LocalFiles.advanced_extension:type_name -> substrait.extensions.AdvancedExtension - 63, // 180: substrait.ReadRel.LocalFiles.FileOrFiles.parquet:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptions - 64, // 181: substrait.ReadRel.LocalFiles.FileOrFiles.arrow:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptions - 65, // 182: substrait.ReadRel.LocalFiles.FileOrFiles.orc:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.OrcReadOptions - 142, // 183: substrait.ReadRel.LocalFiles.FileOrFiles.extension:type_name -> google.protobuf.Any - 66, // 184: substrait.ReadRel.LocalFiles.FileOrFiles.dwrf:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptions - 67, // 185: substrait.ReadRel.LocalFiles.FileOrFiles.text:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptions - 47, // 186: substrait.AggregateRel.Grouping.grouping_expressions:type_name -> substrait.Expression - 49, // 187: substrait.AggregateRel.Measure.measure:type_name -> substrait.AggregateFunction - 47, // 188: substrait.AggregateRel.Measure.filter:type_name -> substrait.Expression - 45, // 189: substrait.ConsistentPartitionWindowRel.WindowRelFunction.arguments:type_name -> substrait.FunctionArgument - 46, // 190: substrait.ConsistentPartitionWindowRel.WindowRelFunction.options:type_name -> substrait.FunctionOption - 143, // 191: substrait.ConsistentPartitionWindowRel.WindowRelFunction.output_type:type_name -> substrait.Type - 0, // 192: substrait.ConsistentPartitionWindowRel.WindowRelFunction.phase:type_name -> substrait.AggregationPhase - 18, // 193: substrait.ConsistentPartitionWindowRel.WindowRelFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation - 111, // 194: substrait.ConsistentPartitionWindowRel.WindowRelFunction.lower_bound:type_name -> substrait.Expression.WindowFunction.Bound - 111, // 195: substrait.ConsistentPartitionWindowRel.WindowRelFunction.upper_bound:type_name -> substrait.Expression.WindowFunction.Bound - 12, // 196: substrait.ConsistentPartitionWindowRel.WindowRelFunction.bounds_type:type_name -> substrait.Expression.WindowFunction.BoundsType - 93, // 197: substrait.ExchangeRel.ScatterFields.fields:type_name -> substrait.Expression.FieldReference - 47, // 198: substrait.ExchangeRel.SingleBucketExpression.expression:type_name -> substrait.Expression - 47, // 199: substrait.ExchangeRel.MultiBucketExpression.expression:type_name -> substrait.Expression - 142, // 200: substrait.ExchangeRel.ExchangeTarget.extended:type_name -> google.protobuf.Any - 78, // 201: substrait.ExpandRel.ExpandField.switching_field:type_name -> substrait.ExpandRel.SwitchingField - 47, // 202: substrait.ExpandRel.ExpandField.consistent_field:type_name -> substrait.Expression - 47, // 203: substrait.ExpandRel.SwitchingField.duplicates:type_name -> substrait.Expression - 8, // 204: substrait.ComparisonJoinKey.ComparisonType.simple:type_name -> substrait.ComparisonJoinKey.SimpleComparisonType - 95, // 205: substrait.Expression.Enum.unspecified:type_name -> substrait.Expression.Enum.Empty - 100, // 206: substrait.Expression.Literal.interval_year_to_month:type_name -> substrait.Expression.Literal.IntervalYearToMonth - 101, // 207: substrait.Expression.Literal.interval_day_to_second:type_name -> substrait.Expression.Literal.IntervalDayToSecond - 102, // 208: substrait.Expression.Literal.interval_compound:type_name -> substrait.Expression.Literal.IntervalCompound - 96, // 209: substrait.Expression.Literal.var_char:type_name -> substrait.Expression.Literal.VarChar - 97, // 210: substrait.Expression.Literal.decimal:type_name -> substrait.Expression.Literal.Decimal - 98, // 211: substrait.Expression.Literal.precision_timestamp:type_name -> substrait.Expression.Literal.PrecisionTimestamp - 98, // 212: substrait.Expression.Literal.precision_timestamp_tz:type_name -> substrait.Expression.Literal.PrecisionTimestamp - 103, // 213: substrait.Expression.Literal.struct:type_name -> substrait.Expression.Literal.Struct - 99, // 214: substrait.Expression.Literal.map:type_name -> substrait.Expression.Literal.Map - 143, // 215: substrait.Expression.Literal.null:type_name -> substrait.Type - 104, // 216: substrait.Expression.Literal.list:type_name -> substrait.Expression.Literal.List - 144, // 217: substrait.Expression.Literal.empty_list:type_name -> substrait.Type.List - 145, // 218: substrait.Expression.Literal.empty_map:type_name -> substrait.Type.Map - 105, // 219: substrait.Expression.Literal.user_defined:type_name -> substrait.Expression.Literal.UserDefined - 108, // 220: substrait.Expression.Nested.struct:type_name -> substrait.Expression.Nested.Struct - 109, // 221: substrait.Expression.Nested.list:type_name -> substrait.Expression.Nested.List - 107, // 222: substrait.Expression.Nested.map:type_name -> substrait.Expression.Nested.Map - 45, // 223: substrait.Expression.ScalarFunction.arguments:type_name -> substrait.FunctionArgument - 46, // 224: substrait.Expression.ScalarFunction.options:type_name -> substrait.FunctionOption - 143, // 225: substrait.Expression.ScalarFunction.output_type:type_name -> substrait.Type - 47, // 226: substrait.Expression.ScalarFunction.args:type_name -> substrait.Expression - 45, // 227: substrait.Expression.WindowFunction.arguments:type_name -> substrait.FunctionArgument - 46, // 228: substrait.Expression.WindowFunction.options:type_name -> substrait.FunctionOption - 143, // 229: substrait.Expression.WindowFunction.output_type:type_name -> substrait.Type - 0, // 230: substrait.Expression.WindowFunction.phase:type_name -> substrait.AggregationPhase - 48, // 231: substrait.Expression.WindowFunction.sorts:type_name -> substrait.SortField - 18, // 232: substrait.Expression.WindowFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation - 47, // 233: substrait.Expression.WindowFunction.partitions:type_name -> substrait.Expression - 12, // 234: substrait.Expression.WindowFunction.bounds_type:type_name -> substrait.Expression.WindowFunction.BoundsType - 111, // 235: substrait.Expression.WindowFunction.lower_bound:type_name -> substrait.Expression.WindowFunction.Bound - 111, // 236: substrait.Expression.WindowFunction.upper_bound:type_name -> substrait.Expression.WindowFunction.Bound - 47, // 237: substrait.Expression.WindowFunction.args:type_name -> substrait.Expression - 116, // 238: substrait.Expression.IfThen.ifs:type_name -> substrait.Expression.IfThen.IfClause - 47, // 239: substrait.Expression.IfThen.else:type_name -> substrait.Expression - 143, // 240: substrait.Expression.Cast.type:type_name -> substrait.Type - 47, // 241: substrait.Expression.Cast.input:type_name -> substrait.Expression - 13, // 242: substrait.Expression.Cast.failure_behavior:type_name -> substrait.Expression.Cast.FailureBehavior - 47, // 243: substrait.Expression.SwitchExpression.match:type_name -> substrait.Expression - 117, // 244: substrait.Expression.SwitchExpression.ifs:type_name -> substrait.Expression.SwitchExpression.IfValue - 47, // 245: substrait.Expression.SwitchExpression.else:type_name -> substrait.Expression - 47, // 246: substrait.Expression.SingularOrList.value:type_name -> substrait.Expression - 47, // 247: substrait.Expression.SingularOrList.options:type_name -> substrait.Expression - 47, // 248: substrait.Expression.MultiOrList.value:type_name -> substrait.Expression - 118, // 249: substrait.Expression.MultiOrList.options:type_name -> substrait.Expression.MultiOrList.Record - 47, // 250: substrait.Expression.EmbeddedFunction.arguments:type_name -> substrait.Expression - 143, // 251: substrait.Expression.EmbeddedFunction.output_type:type_name -> substrait.Type - 119, // 252: substrait.Expression.EmbeddedFunction.python_pickle_function:type_name -> substrait.Expression.EmbeddedFunction.PythonPickleFunction - 120, // 253: substrait.Expression.EmbeddedFunction.web_assembly_function:type_name -> substrait.Expression.EmbeddedFunction.WebAssemblyFunction - 121, // 254: substrait.Expression.ReferenceSegment.map_key:type_name -> substrait.Expression.ReferenceSegment.MapKey - 122, // 255: substrait.Expression.ReferenceSegment.struct_field:type_name -> substrait.Expression.ReferenceSegment.StructField - 123, // 256: substrait.Expression.ReferenceSegment.list_element:type_name -> substrait.Expression.ReferenceSegment.ListElement - 125, // 257: substrait.Expression.MaskExpression.select:type_name -> substrait.Expression.MaskExpression.StructSelect - 91, // 258: substrait.Expression.FieldReference.direct_reference:type_name -> substrait.Expression.ReferenceSegment - 92, // 259: substrait.Expression.FieldReference.masked_reference:type_name -> substrait.Expression.MaskExpression - 47, // 260: substrait.Expression.FieldReference.expression:type_name -> substrait.Expression - 134, // 261: substrait.Expression.FieldReference.root_reference:type_name -> substrait.Expression.FieldReference.RootReference - 135, // 262: substrait.Expression.FieldReference.outer_reference:type_name -> substrait.Expression.FieldReference.OuterReference - 136, // 263: substrait.Expression.Subquery.scalar:type_name -> substrait.Expression.Subquery.Scalar - 137, // 264: substrait.Expression.Subquery.in_predicate:type_name -> substrait.Expression.Subquery.InPredicate - 138, // 265: substrait.Expression.Subquery.set_predicate:type_name -> substrait.Expression.Subquery.SetPredicate - 139, // 266: substrait.Expression.Subquery.set_comparison:type_name -> substrait.Expression.Subquery.SetComparison - 106, // 267: substrait.Expression.Literal.Map.key_values:type_name -> substrait.Expression.Literal.Map.KeyValue - 100, // 268: substrait.Expression.Literal.IntervalCompound.interval_year_to_month:type_name -> substrait.Expression.Literal.IntervalYearToMonth - 101, // 269: substrait.Expression.Literal.IntervalCompound.interval_day_to_second:type_name -> substrait.Expression.Literal.IntervalDayToSecond - 81, // 270: substrait.Expression.Literal.Struct.fields:type_name -> substrait.Expression.Literal - 81, // 271: substrait.Expression.Literal.List.values:type_name -> substrait.Expression.Literal - 146, // 272: substrait.Expression.Literal.UserDefined.type_parameters:type_name -> substrait.Type.Parameter - 142, // 273: substrait.Expression.Literal.UserDefined.value:type_name -> google.protobuf.Any - 103, // 274: substrait.Expression.Literal.UserDefined.struct:type_name -> substrait.Expression.Literal.Struct - 81, // 275: substrait.Expression.Literal.Map.KeyValue.key:type_name -> substrait.Expression.Literal - 81, // 276: substrait.Expression.Literal.Map.KeyValue.value:type_name -> substrait.Expression.Literal - 110, // 277: substrait.Expression.Nested.Map.key_values:type_name -> substrait.Expression.Nested.Map.KeyValue - 47, // 278: substrait.Expression.Nested.Struct.fields:type_name -> substrait.Expression - 47, // 279: substrait.Expression.Nested.List.values:type_name -> substrait.Expression - 47, // 280: substrait.Expression.Nested.Map.KeyValue.key:type_name -> substrait.Expression - 47, // 281: substrait.Expression.Nested.Map.KeyValue.value:type_name -> substrait.Expression - 112, // 282: substrait.Expression.WindowFunction.Bound.preceding:type_name -> substrait.Expression.WindowFunction.Bound.Preceding - 113, // 283: substrait.Expression.WindowFunction.Bound.following:type_name -> substrait.Expression.WindowFunction.Bound.Following - 114, // 284: substrait.Expression.WindowFunction.Bound.current_row:type_name -> substrait.Expression.WindowFunction.Bound.CurrentRow - 115, // 285: substrait.Expression.WindowFunction.Bound.unbounded:type_name -> substrait.Expression.WindowFunction.Bound.Unbounded - 47, // 286: substrait.Expression.IfThen.IfClause.if:type_name -> substrait.Expression - 47, // 287: substrait.Expression.IfThen.IfClause.then:type_name -> substrait.Expression - 81, // 288: substrait.Expression.SwitchExpression.IfValue.if:type_name -> substrait.Expression.Literal - 47, // 289: substrait.Expression.SwitchExpression.IfValue.then:type_name -> substrait.Expression - 47, // 290: substrait.Expression.MultiOrList.Record.fields:type_name -> substrait.Expression - 81, // 291: substrait.Expression.ReferenceSegment.MapKey.map_key:type_name -> substrait.Expression.Literal - 91, // 292: substrait.Expression.ReferenceSegment.MapKey.child:type_name -> substrait.Expression.ReferenceSegment - 91, // 293: substrait.Expression.ReferenceSegment.StructField.child:type_name -> substrait.Expression.ReferenceSegment - 91, // 294: substrait.Expression.ReferenceSegment.ListElement.child:type_name -> substrait.Expression.ReferenceSegment - 125, // 295: substrait.Expression.MaskExpression.Select.struct:type_name -> substrait.Expression.MaskExpression.StructSelect - 127, // 296: substrait.Expression.MaskExpression.Select.list:type_name -> substrait.Expression.MaskExpression.ListSelect - 128, // 297: substrait.Expression.MaskExpression.Select.map:type_name -> substrait.Expression.MaskExpression.MapSelect - 126, // 298: substrait.Expression.MaskExpression.StructSelect.struct_items:type_name -> substrait.Expression.MaskExpression.StructItem - 124, // 299: substrait.Expression.MaskExpression.StructItem.child:type_name -> substrait.Expression.MaskExpression.Select - 129, // 300: substrait.Expression.MaskExpression.ListSelect.selection:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem - 124, // 301: substrait.Expression.MaskExpression.ListSelect.child:type_name -> substrait.Expression.MaskExpression.Select - 132, // 302: substrait.Expression.MaskExpression.MapSelect.key:type_name -> substrait.Expression.MaskExpression.MapSelect.MapKey - 133, // 303: substrait.Expression.MaskExpression.MapSelect.expression:type_name -> substrait.Expression.MaskExpression.MapSelect.MapKeyExpression - 124, // 304: substrait.Expression.MaskExpression.MapSelect.child:type_name -> substrait.Expression.MaskExpression.Select - 130, // 305: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.item:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListElement - 131, // 306: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.slice:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListSlice - 36, // 307: substrait.Expression.Subquery.Scalar.input:type_name -> substrait.Rel - 47, // 308: substrait.Expression.Subquery.InPredicate.needles:type_name -> substrait.Expression - 36, // 309: substrait.Expression.Subquery.InPredicate.haystack:type_name -> substrait.Rel - 14, // 310: substrait.Expression.Subquery.SetPredicate.predicate_op:type_name -> substrait.Expression.Subquery.SetPredicate.PredicateOp - 36, // 311: substrait.Expression.Subquery.SetPredicate.tuples:type_name -> substrait.Rel - 16, // 312: substrait.Expression.Subquery.SetComparison.reduction_op:type_name -> substrait.Expression.Subquery.SetComparison.ReductionOp - 15, // 313: substrait.Expression.Subquery.SetComparison.comparison_op:type_name -> substrait.Expression.Subquery.SetComparison.ComparisonOp - 47, // 314: substrait.Expression.Subquery.SetComparison.left:type_name -> substrait.Expression - 36, // 315: substrait.Expression.Subquery.SetComparison.right:type_name -> substrait.Rel - 316, // [316:316] is the sub-list for method output_type - 316, // [316:316] is the sub-list for method input_type - 316, // [316:316] is the sub-list for extension type_name - 316, // [316:316] is the sub-list for extension extendee - 0, // [0:316] is the sub-list for field type_name + 54, // 0: substrait.RelCommon.direct:type_name -> substrait.RelCommon.Direct + 55, // 1: substrait.RelCommon.emit:type_name -> substrait.RelCommon.Emit + 56, // 2: substrait.RelCommon.hint:type_name -> substrait.RelCommon.Hint + 146, // 3: substrait.RelCommon.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 4: substrait.ReadRel.common:type_name -> substrait.RelCommon + 147, // 5: substrait.ReadRel.base_schema:type_name -> substrait.NamedStruct + 50, // 6: substrait.ReadRel.filter:type_name -> substrait.Expression + 50, // 7: substrait.ReadRel.best_effort_filter:type_name -> substrait.Expression + 98, // 8: substrait.ReadRel.projection:type_name -> substrait.Expression.MaskExpression + 146, // 9: substrait.ReadRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 63, // 10: substrait.ReadRel.virtual_table:type_name -> substrait.ReadRel.VirtualTable + 65, // 11: substrait.ReadRel.local_files:type_name -> substrait.ReadRel.LocalFiles + 61, // 12: substrait.ReadRel.named_table:type_name -> substrait.ReadRel.NamedTable + 64, // 13: substrait.ReadRel.extension_table:type_name -> substrait.ReadRel.ExtensionTable + 62, // 14: substrait.ReadRel.iceberg_table:type_name -> substrait.ReadRel.IcebergTable + 20, // 15: substrait.ProjectRel.common:type_name -> substrait.RelCommon + 37, // 16: substrait.ProjectRel.input:type_name -> substrait.Rel + 50, // 17: substrait.ProjectRel.expressions:type_name -> substrait.Expression + 146, // 18: substrait.ProjectRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 19: substrait.JoinRel.common:type_name -> substrait.RelCommon + 37, // 20: substrait.JoinRel.left:type_name -> substrait.Rel + 37, // 21: substrait.JoinRel.right:type_name -> substrait.Rel + 50, // 22: substrait.JoinRel.expression:type_name -> substrait.Expression + 50, // 23: substrait.JoinRel.post_join_filter:type_name -> substrait.Expression + 2, // 24: substrait.JoinRel.type:type_name -> substrait.JoinRel.JoinType + 146, // 25: substrait.JoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 26: substrait.CrossRel.common:type_name -> substrait.RelCommon + 37, // 27: substrait.CrossRel.left:type_name -> substrait.Rel + 37, // 28: substrait.CrossRel.right:type_name -> substrait.Rel + 146, // 29: substrait.CrossRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 30: substrait.FetchRel.common:type_name -> substrait.RelCommon + 37, // 31: substrait.FetchRel.input:type_name -> substrait.Rel + 50, // 32: substrait.FetchRel.offset_expr:type_name -> substrait.Expression + 50, // 33: substrait.FetchRel.count_expr:type_name -> substrait.Expression + 146, // 34: substrait.FetchRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 35: substrait.AggregateRel.common:type_name -> substrait.RelCommon + 37, // 36: substrait.AggregateRel.input:type_name -> substrait.Rel + 73, // 37: substrait.AggregateRel.groupings:type_name -> substrait.AggregateRel.Grouping + 74, // 38: substrait.AggregateRel.measures:type_name -> substrait.AggregateRel.Measure + 50, // 39: substrait.AggregateRel.grouping_expressions:type_name -> substrait.Expression + 146, // 40: substrait.AggregateRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 41: substrait.ConsistentPartitionWindowRel.common:type_name -> substrait.RelCommon + 37, // 42: substrait.ConsistentPartitionWindowRel.input:type_name -> substrait.Rel + 75, // 43: substrait.ConsistentPartitionWindowRel.window_functions:type_name -> substrait.ConsistentPartitionWindowRel.WindowRelFunction + 50, // 44: substrait.ConsistentPartitionWindowRel.partition_expressions:type_name -> substrait.Expression + 51, // 45: substrait.ConsistentPartitionWindowRel.sorts:type_name -> substrait.SortField + 146, // 46: substrait.ConsistentPartitionWindowRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 47: substrait.SortRel.common:type_name -> substrait.RelCommon + 37, // 48: substrait.SortRel.input:type_name -> substrait.Rel + 51, // 49: substrait.SortRel.sorts:type_name -> substrait.SortField + 146, // 50: substrait.SortRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 51: substrait.FilterRel.common:type_name -> substrait.RelCommon + 37, // 52: substrait.FilterRel.input:type_name -> substrait.Rel + 50, // 53: substrait.FilterRel.condition:type_name -> substrait.Expression + 146, // 54: substrait.FilterRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 55: substrait.SetRel.common:type_name -> substrait.RelCommon + 37, // 56: substrait.SetRel.inputs:type_name -> substrait.Rel + 3, // 57: substrait.SetRel.op:type_name -> substrait.SetRel.SetOp + 146, // 58: substrait.SetRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 59: substrait.ExtensionSingleRel.common:type_name -> substrait.RelCommon + 37, // 60: substrait.ExtensionSingleRel.input:type_name -> substrait.Rel + 148, // 61: substrait.ExtensionSingleRel.detail:type_name -> google.protobuf.Any + 20, // 62: substrait.ExtensionLeafRel.common:type_name -> substrait.RelCommon + 148, // 63: substrait.ExtensionLeafRel.detail:type_name -> google.protobuf.Any + 20, // 64: substrait.ExtensionMultiRel.common:type_name -> substrait.RelCommon + 37, // 65: substrait.ExtensionMultiRel.inputs:type_name -> substrait.Rel + 148, // 66: substrait.ExtensionMultiRel.detail:type_name -> google.protobuf.Any + 20, // 67: substrait.ExchangeRel.common:type_name -> substrait.RelCommon + 37, // 68: substrait.ExchangeRel.input:type_name -> substrait.Rel + 81, // 69: substrait.ExchangeRel.targets:type_name -> substrait.ExchangeRel.ExchangeTarget + 76, // 70: substrait.ExchangeRel.scatter_by_fields:type_name -> substrait.ExchangeRel.ScatterFields + 77, // 71: substrait.ExchangeRel.single_target:type_name -> substrait.ExchangeRel.SingleBucketExpression + 78, // 72: substrait.ExchangeRel.multi_target:type_name -> substrait.ExchangeRel.MultiBucketExpression + 80, // 73: substrait.ExchangeRel.round_robin:type_name -> substrait.ExchangeRel.RoundRobin + 79, // 74: substrait.ExchangeRel.broadcast:type_name -> substrait.ExchangeRel.Broadcast + 146, // 75: substrait.ExchangeRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 76: substrait.ExpandRel.common:type_name -> substrait.RelCommon + 37, // 77: substrait.ExpandRel.input:type_name -> substrait.Rel + 82, // 78: substrait.ExpandRel.fields:type_name -> substrait.ExpandRel.ExpandField + 37, // 79: substrait.RelRoot.input:type_name -> substrait.Rel + 21, // 80: substrait.Rel.read:type_name -> substrait.ReadRel + 29, // 81: substrait.Rel.filter:type_name -> substrait.FilterRel + 25, // 82: substrait.Rel.fetch:type_name -> substrait.FetchRel + 26, // 83: substrait.Rel.aggregate:type_name -> substrait.AggregateRel + 28, // 84: substrait.Rel.sort:type_name -> substrait.SortRel + 23, // 85: substrait.Rel.join:type_name -> substrait.JoinRel + 22, // 86: substrait.Rel.project:type_name -> substrait.ProjectRel + 30, // 87: substrait.Rel.set:type_name -> substrait.SetRel + 31, // 88: substrait.Rel.extension_single:type_name -> substrait.ExtensionSingleRel + 33, // 89: substrait.Rel.extension_multi:type_name -> substrait.ExtensionMultiRel + 32, // 90: substrait.Rel.extension_leaf:type_name -> substrait.ExtensionLeafRel + 24, // 91: substrait.Rel.cross:type_name -> substrait.CrossRel + 53, // 92: substrait.Rel.reference:type_name -> substrait.ReferenceRel + 41, // 93: substrait.Rel.write:type_name -> substrait.WriteRel + 40, // 94: substrait.Rel.ddl:type_name -> substrait.DdlRel + 42, // 95: substrait.Rel.update:type_name -> substrait.UpdateRel + 45, // 96: substrait.Rel.hash_join:type_name -> substrait.HashJoinRel + 46, // 97: substrait.Rel.merge_join:type_name -> substrait.MergeJoinRel + 47, // 98: substrait.Rel.nested_loop_join:type_name -> substrait.NestedLoopJoinRel + 27, // 99: substrait.Rel.window:type_name -> substrait.ConsistentPartitionWindowRel + 34, // 100: substrait.Rel.exchange:type_name -> substrait.ExchangeRel + 35, // 101: substrait.Rel.expand:type_name -> substrait.ExpandRel + 146, // 102: substrait.NamedObjectWrite.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 148, // 103: substrait.ExtensionObject.detail:type_name -> google.protobuf.Any + 38, // 104: substrait.DdlRel.named_object:type_name -> substrait.NamedObjectWrite + 39, // 105: substrait.DdlRel.extension_object:type_name -> substrait.ExtensionObject + 147, // 106: substrait.DdlRel.table_schema:type_name -> substrait.NamedStruct + 109, // 107: substrait.DdlRel.table_defaults:type_name -> substrait.Expression.Literal.Struct + 4, // 108: substrait.DdlRel.object:type_name -> substrait.DdlRel.DdlObject + 5, // 109: substrait.DdlRel.op:type_name -> substrait.DdlRel.DdlOp + 37, // 110: substrait.DdlRel.view_definition:type_name -> substrait.Rel + 20, // 111: substrait.DdlRel.common:type_name -> substrait.RelCommon + 38, // 112: substrait.WriteRel.named_table:type_name -> substrait.NamedObjectWrite + 39, // 113: substrait.WriteRel.extension_table:type_name -> substrait.ExtensionObject + 147, // 114: substrait.WriteRel.table_schema:type_name -> substrait.NamedStruct + 6, // 115: substrait.WriteRel.op:type_name -> substrait.WriteRel.WriteOp + 37, // 116: substrait.WriteRel.input:type_name -> substrait.Rel + 7, // 117: substrait.WriteRel.create_mode:type_name -> substrait.WriteRel.CreateMode + 8, // 118: substrait.WriteRel.output:type_name -> substrait.WriteRel.OutputMode + 20, // 119: substrait.WriteRel.common:type_name -> substrait.RelCommon + 43, // 120: substrait.UpdateRel.named_table:type_name -> substrait.NamedTable + 147, // 121: substrait.UpdateRel.table_schema:type_name -> substrait.NamedStruct + 50, // 122: substrait.UpdateRel.condition:type_name -> substrait.Expression + 84, // 123: substrait.UpdateRel.transformations:type_name -> substrait.UpdateRel.TransformExpression + 146, // 124: substrait.NamedTable.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 99, // 125: substrait.ComparisonJoinKey.left:type_name -> substrait.Expression.FieldReference + 99, // 126: substrait.ComparisonJoinKey.right:type_name -> substrait.Expression.FieldReference + 85, // 127: substrait.ComparisonJoinKey.comparison:type_name -> substrait.ComparisonJoinKey.ComparisonType + 20, // 128: substrait.HashJoinRel.common:type_name -> substrait.RelCommon + 37, // 129: substrait.HashJoinRel.left:type_name -> substrait.Rel + 37, // 130: substrait.HashJoinRel.right:type_name -> substrait.Rel + 99, // 131: substrait.HashJoinRel.left_keys:type_name -> substrait.Expression.FieldReference + 99, // 132: substrait.HashJoinRel.right_keys:type_name -> substrait.Expression.FieldReference + 44, // 133: substrait.HashJoinRel.keys:type_name -> substrait.ComparisonJoinKey + 50, // 134: substrait.HashJoinRel.post_join_filter:type_name -> substrait.Expression + 10, // 135: substrait.HashJoinRel.type:type_name -> substrait.HashJoinRel.JoinType + 146, // 136: substrait.HashJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 137: substrait.MergeJoinRel.common:type_name -> substrait.RelCommon + 37, // 138: substrait.MergeJoinRel.left:type_name -> substrait.Rel + 37, // 139: substrait.MergeJoinRel.right:type_name -> substrait.Rel + 99, // 140: substrait.MergeJoinRel.left_keys:type_name -> substrait.Expression.FieldReference + 99, // 141: substrait.MergeJoinRel.right_keys:type_name -> substrait.Expression.FieldReference + 44, // 142: substrait.MergeJoinRel.keys:type_name -> substrait.ComparisonJoinKey + 50, // 143: substrait.MergeJoinRel.post_join_filter:type_name -> substrait.Expression + 11, // 144: substrait.MergeJoinRel.type:type_name -> substrait.MergeJoinRel.JoinType + 146, // 145: substrait.MergeJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 20, // 146: substrait.NestedLoopJoinRel.common:type_name -> substrait.RelCommon + 37, // 147: substrait.NestedLoopJoinRel.left:type_name -> substrait.Rel + 37, // 148: substrait.NestedLoopJoinRel.right:type_name -> substrait.Rel + 50, // 149: substrait.NestedLoopJoinRel.expression:type_name -> substrait.Expression + 12, // 150: substrait.NestedLoopJoinRel.type:type_name -> substrait.NestedLoopJoinRel.JoinType + 146, // 151: substrait.NestedLoopJoinRel.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 149, // 152: substrait.FunctionArgument.type:type_name -> substrait.Type + 50, // 153: substrait.FunctionArgument.value:type_name -> substrait.Expression + 87, // 154: substrait.Expression.literal:type_name -> substrait.Expression.Literal + 99, // 155: substrait.Expression.selection:type_name -> substrait.Expression.FieldReference + 89, // 156: substrait.Expression.scalar_function:type_name -> substrait.Expression.ScalarFunction + 90, // 157: substrait.Expression.window_function:type_name -> substrait.Expression.WindowFunction + 91, // 158: substrait.Expression.if_then:type_name -> substrait.Expression.IfThen + 93, // 159: substrait.Expression.switch_expression:type_name -> substrait.Expression.SwitchExpression + 94, // 160: substrait.Expression.singular_or_list:type_name -> substrait.Expression.SingularOrList + 95, // 161: substrait.Expression.multi_or_list:type_name -> substrait.Expression.MultiOrList + 92, // 162: substrait.Expression.cast:type_name -> substrait.Expression.Cast + 100, // 163: substrait.Expression.subquery:type_name -> substrait.Expression.Subquery + 88, // 164: substrait.Expression.nested:type_name -> substrait.Expression.Nested + 86, // 165: substrait.Expression.enum:type_name -> substrait.Expression.Enum + 50, // 166: substrait.SortField.expr:type_name -> substrait.Expression + 18, // 167: substrait.SortField.direction:type_name -> substrait.SortField.SortDirection + 48, // 168: substrait.AggregateFunction.arguments:type_name -> substrait.FunctionArgument + 49, // 169: substrait.AggregateFunction.options:type_name -> substrait.FunctionOption + 149, // 170: substrait.AggregateFunction.output_type:type_name -> substrait.Type + 0, // 171: substrait.AggregateFunction.phase:type_name -> substrait.AggregationPhase + 51, // 172: substrait.AggregateFunction.sorts:type_name -> substrait.SortField + 19, // 173: substrait.AggregateFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation + 50, // 174: substrait.AggregateFunction.args:type_name -> substrait.Expression + 57, // 175: substrait.RelCommon.Hint.stats:type_name -> substrait.RelCommon.Hint.Stats + 58, // 176: substrait.RelCommon.Hint.constraint:type_name -> substrait.RelCommon.Hint.RuntimeConstraint + 146, // 177: substrait.RelCommon.Hint.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 59, // 178: substrait.RelCommon.Hint.saved_computations:type_name -> substrait.RelCommon.Hint.SavedComputation + 60, // 179: substrait.RelCommon.Hint.loaded_computations:type_name -> substrait.RelCommon.Hint.LoadedComputation + 146, // 180: substrait.RelCommon.Hint.Stats.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 146, // 181: substrait.RelCommon.Hint.RuntimeConstraint.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 1, // 182: substrait.RelCommon.Hint.SavedComputation.type:type_name -> substrait.RelCommon.Hint.ComputationType + 1, // 183: substrait.RelCommon.Hint.LoadedComputation.type:type_name -> substrait.RelCommon.Hint.ComputationType + 146, // 184: substrait.ReadRel.NamedTable.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 66, // 185: substrait.ReadRel.IcebergTable.direct:type_name -> substrait.ReadRel.IcebergTable.MetadataFileRead + 109, // 186: substrait.ReadRel.VirtualTable.values:type_name -> substrait.Expression.Literal.Struct + 114, // 187: substrait.ReadRel.VirtualTable.expressions:type_name -> substrait.Expression.Nested.Struct + 148, // 188: substrait.ReadRel.ExtensionTable.detail:type_name -> google.protobuf.Any + 67, // 189: substrait.ReadRel.LocalFiles.items:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles + 146, // 190: substrait.ReadRel.LocalFiles.advanced_extension:type_name -> substrait.extensions.AdvancedExtension + 68, // 191: substrait.ReadRel.LocalFiles.FileOrFiles.parquet:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.ParquetReadOptions + 69, // 192: substrait.ReadRel.LocalFiles.FileOrFiles.arrow:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.ArrowReadOptions + 70, // 193: substrait.ReadRel.LocalFiles.FileOrFiles.orc:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.OrcReadOptions + 148, // 194: substrait.ReadRel.LocalFiles.FileOrFiles.extension:type_name -> google.protobuf.Any + 71, // 195: substrait.ReadRel.LocalFiles.FileOrFiles.dwrf:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.DwrfReadOptions + 72, // 196: substrait.ReadRel.LocalFiles.FileOrFiles.text:type_name -> substrait.ReadRel.LocalFiles.FileOrFiles.DelimiterSeparatedTextReadOptions + 50, // 197: substrait.AggregateRel.Grouping.grouping_expressions:type_name -> substrait.Expression + 52, // 198: substrait.AggregateRel.Measure.measure:type_name -> substrait.AggregateFunction + 50, // 199: substrait.AggregateRel.Measure.filter:type_name -> substrait.Expression + 48, // 200: substrait.ConsistentPartitionWindowRel.WindowRelFunction.arguments:type_name -> substrait.FunctionArgument + 49, // 201: substrait.ConsistentPartitionWindowRel.WindowRelFunction.options:type_name -> substrait.FunctionOption + 149, // 202: substrait.ConsistentPartitionWindowRel.WindowRelFunction.output_type:type_name -> substrait.Type + 0, // 203: substrait.ConsistentPartitionWindowRel.WindowRelFunction.phase:type_name -> substrait.AggregationPhase + 19, // 204: substrait.ConsistentPartitionWindowRel.WindowRelFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation + 117, // 205: substrait.ConsistentPartitionWindowRel.WindowRelFunction.lower_bound:type_name -> substrait.Expression.WindowFunction.Bound + 117, // 206: substrait.ConsistentPartitionWindowRel.WindowRelFunction.upper_bound:type_name -> substrait.Expression.WindowFunction.Bound + 13, // 207: substrait.ConsistentPartitionWindowRel.WindowRelFunction.bounds_type:type_name -> substrait.Expression.WindowFunction.BoundsType + 99, // 208: substrait.ExchangeRel.ScatterFields.fields:type_name -> substrait.Expression.FieldReference + 50, // 209: substrait.ExchangeRel.SingleBucketExpression.expression:type_name -> substrait.Expression + 50, // 210: substrait.ExchangeRel.MultiBucketExpression.expression:type_name -> substrait.Expression + 148, // 211: substrait.ExchangeRel.ExchangeTarget.extended:type_name -> google.protobuf.Any + 83, // 212: substrait.ExpandRel.ExpandField.switching_field:type_name -> substrait.ExpandRel.SwitchingField + 50, // 213: substrait.ExpandRel.ExpandField.consistent_field:type_name -> substrait.Expression + 50, // 214: substrait.ExpandRel.SwitchingField.duplicates:type_name -> substrait.Expression + 50, // 215: substrait.UpdateRel.TransformExpression.transformation:type_name -> substrait.Expression + 9, // 216: substrait.ComparisonJoinKey.ComparisonType.simple:type_name -> substrait.ComparisonJoinKey.SimpleComparisonType + 101, // 217: substrait.Expression.Enum.unspecified:type_name -> substrait.Expression.Enum.Empty + 106, // 218: substrait.Expression.Literal.interval_year_to_month:type_name -> substrait.Expression.Literal.IntervalYearToMonth + 107, // 219: substrait.Expression.Literal.interval_day_to_second:type_name -> substrait.Expression.Literal.IntervalDayToSecond + 108, // 220: substrait.Expression.Literal.interval_compound:type_name -> substrait.Expression.Literal.IntervalCompound + 102, // 221: substrait.Expression.Literal.var_char:type_name -> substrait.Expression.Literal.VarChar + 103, // 222: substrait.Expression.Literal.decimal:type_name -> substrait.Expression.Literal.Decimal + 104, // 223: substrait.Expression.Literal.precision_timestamp:type_name -> substrait.Expression.Literal.PrecisionTimestamp + 104, // 224: substrait.Expression.Literal.precision_timestamp_tz:type_name -> substrait.Expression.Literal.PrecisionTimestamp + 109, // 225: substrait.Expression.Literal.struct:type_name -> substrait.Expression.Literal.Struct + 105, // 226: substrait.Expression.Literal.map:type_name -> substrait.Expression.Literal.Map + 149, // 227: substrait.Expression.Literal.null:type_name -> substrait.Type + 110, // 228: substrait.Expression.Literal.list:type_name -> substrait.Expression.Literal.List + 150, // 229: substrait.Expression.Literal.empty_list:type_name -> substrait.Type.List + 151, // 230: substrait.Expression.Literal.empty_map:type_name -> substrait.Type.Map + 111, // 231: substrait.Expression.Literal.user_defined:type_name -> substrait.Expression.Literal.UserDefined + 114, // 232: substrait.Expression.Nested.struct:type_name -> substrait.Expression.Nested.Struct + 115, // 233: substrait.Expression.Nested.list:type_name -> substrait.Expression.Nested.List + 113, // 234: substrait.Expression.Nested.map:type_name -> substrait.Expression.Nested.Map + 48, // 235: substrait.Expression.ScalarFunction.arguments:type_name -> substrait.FunctionArgument + 49, // 236: substrait.Expression.ScalarFunction.options:type_name -> substrait.FunctionOption + 149, // 237: substrait.Expression.ScalarFunction.output_type:type_name -> substrait.Type + 50, // 238: substrait.Expression.ScalarFunction.args:type_name -> substrait.Expression + 48, // 239: substrait.Expression.WindowFunction.arguments:type_name -> substrait.FunctionArgument + 49, // 240: substrait.Expression.WindowFunction.options:type_name -> substrait.FunctionOption + 149, // 241: substrait.Expression.WindowFunction.output_type:type_name -> substrait.Type + 0, // 242: substrait.Expression.WindowFunction.phase:type_name -> substrait.AggregationPhase + 51, // 243: substrait.Expression.WindowFunction.sorts:type_name -> substrait.SortField + 19, // 244: substrait.Expression.WindowFunction.invocation:type_name -> substrait.AggregateFunction.AggregationInvocation + 50, // 245: substrait.Expression.WindowFunction.partitions:type_name -> substrait.Expression + 13, // 246: substrait.Expression.WindowFunction.bounds_type:type_name -> substrait.Expression.WindowFunction.BoundsType + 117, // 247: substrait.Expression.WindowFunction.lower_bound:type_name -> substrait.Expression.WindowFunction.Bound + 117, // 248: substrait.Expression.WindowFunction.upper_bound:type_name -> substrait.Expression.WindowFunction.Bound + 50, // 249: substrait.Expression.WindowFunction.args:type_name -> substrait.Expression + 122, // 250: substrait.Expression.IfThen.ifs:type_name -> substrait.Expression.IfThen.IfClause + 50, // 251: substrait.Expression.IfThen.else:type_name -> substrait.Expression + 149, // 252: substrait.Expression.Cast.type:type_name -> substrait.Type + 50, // 253: substrait.Expression.Cast.input:type_name -> substrait.Expression + 14, // 254: substrait.Expression.Cast.failure_behavior:type_name -> substrait.Expression.Cast.FailureBehavior + 50, // 255: substrait.Expression.SwitchExpression.match:type_name -> substrait.Expression + 123, // 256: substrait.Expression.SwitchExpression.ifs:type_name -> substrait.Expression.SwitchExpression.IfValue + 50, // 257: substrait.Expression.SwitchExpression.else:type_name -> substrait.Expression + 50, // 258: substrait.Expression.SingularOrList.value:type_name -> substrait.Expression + 50, // 259: substrait.Expression.SingularOrList.options:type_name -> substrait.Expression + 50, // 260: substrait.Expression.MultiOrList.value:type_name -> substrait.Expression + 124, // 261: substrait.Expression.MultiOrList.options:type_name -> substrait.Expression.MultiOrList.Record + 50, // 262: substrait.Expression.EmbeddedFunction.arguments:type_name -> substrait.Expression + 149, // 263: substrait.Expression.EmbeddedFunction.output_type:type_name -> substrait.Type + 125, // 264: substrait.Expression.EmbeddedFunction.python_pickle_function:type_name -> substrait.Expression.EmbeddedFunction.PythonPickleFunction + 126, // 265: substrait.Expression.EmbeddedFunction.web_assembly_function:type_name -> substrait.Expression.EmbeddedFunction.WebAssemblyFunction + 127, // 266: substrait.Expression.ReferenceSegment.map_key:type_name -> substrait.Expression.ReferenceSegment.MapKey + 128, // 267: substrait.Expression.ReferenceSegment.struct_field:type_name -> substrait.Expression.ReferenceSegment.StructField + 129, // 268: substrait.Expression.ReferenceSegment.list_element:type_name -> substrait.Expression.ReferenceSegment.ListElement + 131, // 269: substrait.Expression.MaskExpression.select:type_name -> substrait.Expression.MaskExpression.StructSelect + 97, // 270: substrait.Expression.FieldReference.direct_reference:type_name -> substrait.Expression.ReferenceSegment + 98, // 271: substrait.Expression.FieldReference.masked_reference:type_name -> substrait.Expression.MaskExpression + 50, // 272: substrait.Expression.FieldReference.expression:type_name -> substrait.Expression + 140, // 273: substrait.Expression.FieldReference.root_reference:type_name -> substrait.Expression.FieldReference.RootReference + 141, // 274: substrait.Expression.FieldReference.outer_reference:type_name -> substrait.Expression.FieldReference.OuterReference + 142, // 275: substrait.Expression.Subquery.scalar:type_name -> substrait.Expression.Subquery.Scalar + 143, // 276: substrait.Expression.Subquery.in_predicate:type_name -> substrait.Expression.Subquery.InPredicate + 144, // 277: substrait.Expression.Subquery.set_predicate:type_name -> substrait.Expression.Subquery.SetPredicate + 145, // 278: substrait.Expression.Subquery.set_comparison:type_name -> substrait.Expression.Subquery.SetComparison + 112, // 279: substrait.Expression.Literal.Map.key_values:type_name -> substrait.Expression.Literal.Map.KeyValue + 106, // 280: substrait.Expression.Literal.IntervalCompound.interval_year_to_month:type_name -> substrait.Expression.Literal.IntervalYearToMonth + 107, // 281: substrait.Expression.Literal.IntervalCompound.interval_day_to_second:type_name -> substrait.Expression.Literal.IntervalDayToSecond + 87, // 282: substrait.Expression.Literal.Struct.fields:type_name -> substrait.Expression.Literal + 87, // 283: substrait.Expression.Literal.List.values:type_name -> substrait.Expression.Literal + 152, // 284: substrait.Expression.Literal.UserDefined.type_parameters:type_name -> substrait.Type.Parameter + 148, // 285: substrait.Expression.Literal.UserDefined.value:type_name -> google.protobuf.Any + 109, // 286: substrait.Expression.Literal.UserDefined.struct:type_name -> substrait.Expression.Literal.Struct + 87, // 287: substrait.Expression.Literal.Map.KeyValue.key:type_name -> substrait.Expression.Literal + 87, // 288: substrait.Expression.Literal.Map.KeyValue.value:type_name -> substrait.Expression.Literal + 116, // 289: substrait.Expression.Nested.Map.key_values:type_name -> substrait.Expression.Nested.Map.KeyValue + 50, // 290: substrait.Expression.Nested.Struct.fields:type_name -> substrait.Expression + 50, // 291: substrait.Expression.Nested.List.values:type_name -> substrait.Expression + 50, // 292: substrait.Expression.Nested.Map.KeyValue.key:type_name -> substrait.Expression + 50, // 293: substrait.Expression.Nested.Map.KeyValue.value:type_name -> substrait.Expression + 118, // 294: substrait.Expression.WindowFunction.Bound.preceding:type_name -> substrait.Expression.WindowFunction.Bound.Preceding + 119, // 295: substrait.Expression.WindowFunction.Bound.following:type_name -> substrait.Expression.WindowFunction.Bound.Following + 120, // 296: substrait.Expression.WindowFunction.Bound.current_row:type_name -> substrait.Expression.WindowFunction.Bound.CurrentRow + 121, // 297: substrait.Expression.WindowFunction.Bound.unbounded:type_name -> substrait.Expression.WindowFunction.Bound.Unbounded + 50, // 298: substrait.Expression.IfThen.IfClause.if:type_name -> substrait.Expression + 50, // 299: substrait.Expression.IfThen.IfClause.then:type_name -> substrait.Expression + 87, // 300: substrait.Expression.SwitchExpression.IfValue.if:type_name -> substrait.Expression.Literal + 50, // 301: substrait.Expression.SwitchExpression.IfValue.then:type_name -> substrait.Expression + 50, // 302: substrait.Expression.MultiOrList.Record.fields:type_name -> substrait.Expression + 87, // 303: substrait.Expression.ReferenceSegment.MapKey.map_key:type_name -> substrait.Expression.Literal + 97, // 304: substrait.Expression.ReferenceSegment.MapKey.child:type_name -> substrait.Expression.ReferenceSegment + 97, // 305: substrait.Expression.ReferenceSegment.StructField.child:type_name -> substrait.Expression.ReferenceSegment + 97, // 306: substrait.Expression.ReferenceSegment.ListElement.child:type_name -> substrait.Expression.ReferenceSegment + 131, // 307: substrait.Expression.MaskExpression.Select.struct:type_name -> substrait.Expression.MaskExpression.StructSelect + 133, // 308: substrait.Expression.MaskExpression.Select.list:type_name -> substrait.Expression.MaskExpression.ListSelect + 134, // 309: substrait.Expression.MaskExpression.Select.map:type_name -> substrait.Expression.MaskExpression.MapSelect + 132, // 310: substrait.Expression.MaskExpression.StructSelect.struct_items:type_name -> substrait.Expression.MaskExpression.StructItem + 130, // 311: substrait.Expression.MaskExpression.StructItem.child:type_name -> substrait.Expression.MaskExpression.Select + 135, // 312: substrait.Expression.MaskExpression.ListSelect.selection:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem + 130, // 313: substrait.Expression.MaskExpression.ListSelect.child:type_name -> substrait.Expression.MaskExpression.Select + 138, // 314: substrait.Expression.MaskExpression.MapSelect.key:type_name -> substrait.Expression.MaskExpression.MapSelect.MapKey + 139, // 315: substrait.Expression.MaskExpression.MapSelect.expression:type_name -> substrait.Expression.MaskExpression.MapSelect.MapKeyExpression + 130, // 316: substrait.Expression.MaskExpression.MapSelect.child:type_name -> substrait.Expression.MaskExpression.Select + 136, // 317: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.item:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListElement + 137, // 318: substrait.Expression.MaskExpression.ListSelect.ListSelectItem.slice:type_name -> substrait.Expression.MaskExpression.ListSelect.ListSelectItem.ListSlice + 37, // 319: substrait.Expression.Subquery.Scalar.input:type_name -> substrait.Rel + 50, // 320: substrait.Expression.Subquery.InPredicate.needles:type_name -> substrait.Expression + 37, // 321: substrait.Expression.Subquery.InPredicate.haystack:type_name -> substrait.Rel + 15, // 322: substrait.Expression.Subquery.SetPredicate.predicate_op:type_name -> substrait.Expression.Subquery.SetPredicate.PredicateOp + 37, // 323: substrait.Expression.Subquery.SetPredicate.tuples:type_name -> substrait.Rel + 17, // 324: substrait.Expression.Subquery.SetComparison.reduction_op:type_name -> substrait.Expression.Subquery.SetComparison.ReductionOp + 16, // 325: substrait.Expression.Subquery.SetComparison.comparison_op:type_name -> substrait.Expression.Subquery.SetComparison.ComparisonOp + 50, // 326: substrait.Expression.Subquery.SetComparison.left:type_name -> substrait.Expression + 37, // 327: substrait.Expression.Subquery.SetComparison.right:type_name -> substrait.Rel + 328, // [328:328] is the sub-list for method output_type + 328, // [328:328] is the sub-list for method input_type + 328, // [328:328] is the sub-list for extension type_name + 328, // [328:328] is the sub-list for extension extendee + 0, // [0:328] is the sub-list for field type_name } func init() { file_substrait_algebra_proto_init() } @@ -12966,6 +13780,13 @@ func file_substrait_algebra_proto_init() { (*ReadRel_LocalFiles_)(nil), (*ReadRel_NamedTable_)(nil), (*ReadRel_ExtensionTable_)(nil), + (*ReadRel_IcebergTable_)(nil), + } + file_substrait_algebra_proto_msgTypes[5].OneofWrappers = []any{ + (*FetchRel_Offset)(nil), + (*FetchRel_OffsetExpr)(nil), + (*FetchRel_Count)(nil), + (*FetchRel_CountExpr)(nil), } file_substrait_algebra_proto_msgTypes[14].OneofWrappers = []any{ (*ExchangeRel_ScatterByFields)(nil), @@ -12990,6 +13811,7 @@ func file_substrait_algebra_proto_init() { (*Rel_Reference)(nil), (*Rel_Write)(nil), (*Rel_Ddl)(nil), + (*Rel_Update)(nil), (*Rel_HashJoin)(nil), (*Rel_MergeJoin)(nil), (*Rel_NestedLoopJoin)(nil), @@ -13005,12 +13827,15 @@ func file_substrait_algebra_proto_init() { (*WriteRel_NamedTable)(nil), (*WriteRel_ExtensionTable)(nil), } - file_substrait_algebra_proto_msgTypes[26].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[22].OneofWrappers = []any{ + (*UpdateRel_NamedTable)(nil), + } + file_substrait_algebra_proto_msgTypes[28].OneofWrappers = []any{ (*FunctionArgument_Enum)(nil), (*FunctionArgument_Type)(nil), (*FunctionArgument_Value)(nil), } - file_substrait_algebra_proto_msgTypes[28].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[30].OneofWrappers = []any{ (*Expression_Literal_)(nil), (*Expression_Selection)(nil), (*Expression_ScalarFunction_)(nil), @@ -13024,11 +13849,18 @@ func file_substrait_algebra_proto_init() { (*Expression_Nested_)(nil), (*Expression_Enum_)(nil), } - file_substrait_algebra_proto_msgTypes[29].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[31].OneofWrappers = []any{ (*SortField_Direction)(nil), (*SortField_ComparisonFunctionReference)(nil), } - file_substrait_algebra_proto_msgTypes[43].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[42].OneofWrappers = []any{ + (*ReadRel_IcebergTable_Direct)(nil), + } + file_substrait_algebra_proto_msgTypes[46].OneofWrappers = []any{ + (*ReadRel_IcebergTable_MetadataFileRead_SnapshotId)(nil), + (*ReadRel_IcebergTable_MetadataFileRead_SnapshotTimestamp)(nil), + } + file_substrait_algebra_proto_msgTypes[47].OneofWrappers = []any{ (*ReadRel_LocalFiles_FileOrFiles_UriPath)(nil), (*ReadRel_LocalFiles_FileOrFiles_UriPathGlob)(nil), (*ReadRel_LocalFiles_FileOrFiles_UriFile)(nil), @@ -13040,24 +13872,24 @@ func file_substrait_algebra_proto_init() { (*ReadRel_LocalFiles_FileOrFiles_Dwrf)(nil), (*ReadRel_LocalFiles_FileOrFiles_Text)(nil), } - file_substrait_algebra_proto_msgTypes[48].OneofWrappers = []any{} - file_substrait_algebra_proto_msgTypes[57].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[52].OneofWrappers = []any{} + file_substrait_algebra_proto_msgTypes[61].OneofWrappers = []any{ (*ExchangeRel_ExchangeTarget_Uri)(nil), (*ExchangeRel_ExchangeTarget_Extended)(nil), } - file_substrait_algebra_proto_msgTypes[58].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[62].OneofWrappers = []any{ (*ExpandRel_ExpandField_SwitchingField)(nil), (*ExpandRel_ExpandField_ConsistentField)(nil), } - file_substrait_algebra_proto_msgTypes[60].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[65].OneofWrappers = []any{ (*ComparisonJoinKey_ComparisonType_Simple)(nil), (*ComparisonJoinKey_ComparisonType_CustomFunctionReference)(nil), } - file_substrait_algebra_proto_msgTypes[61].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[66].OneofWrappers = []any{ (*Expression_Enum_Specified)(nil), (*Expression_Enum_Unspecified)(nil), } - file_substrait_algebra_proto_msgTypes[62].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[67].OneofWrappers = []any{ (*Expression_Literal_Boolean)(nil), (*Expression_Literal_I8)(nil), (*Expression_Literal_I16)(nil), @@ -13089,57 +13921,57 @@ func file_substrait_algebra_proto_init() { (*Expression_Literal_EmptyMap)(nil), (*Expression_Literal_UserDefined_)(nil), } - file_substrait_algebra_proto_msgTypes[63].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[68].OneofWrappers = []any{ (*Expression_Nested_Struct_)(nil), (*Expression_Nested_List_)(nil), (*Expression_Nested_Map_)(nil), } - file_substrait_algebra_proto_msgTypes[71].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[76].OneofWrappers = []any{ (*Expression_EmbeddedFunction_PythonPickleFunction_)(nil), (*Expression_EmbeddedFunction_WebAssemblyFunction_)(nil), } - file_substrait_algebra_proto_msgTypes[72].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[77].OneofWrappers = []any{ (*Expression_ReferenceSegment_MapKey_)(nil), (*Expression_ReferenceSegment_StructField_)(nil), (*Expression_ReferenceSegment_ListElement_)(nil), } - file_substrait_algebra_proto_msgTypes[74].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[79].OneofWrappers = []any{ (*Expression_FieldReference_DirectReference)(nil), (*Expression_FieldReference_MaskedReference)(nil), (*Expression_FieldReference_Expression)(nil), (*Expression_FieldReference_RootReference_)(nil), (*Expression_FieldReference_OuterReference_)(nil), } - file_substrait_algebra_proto_msgTypes[75].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[80].OneofWrappers = []any{ (*Expression_Subquery_Scalar_)(nil), (*Expression_Subquery_InPredicate_)(nil), (*Expression_Subquery_SetPredicate_)(nil), (*Expression_Subquery_SetComparison_)(nil), } - file_substrait_algebra_proto_msgTypes[82].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[87].OneofWrappers = []any{ (*Expression_Literal_IntervalDayToSecond_Microseconds)(nil), (*Expression_Literal_IntervalDayToSecond_Precision)(nil), } - file_substrait_algebra_proto_msgTypes[86].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[91].OneofWrappers = []any{ (*Expression_Literal_UserDefined_Value)(nil), (*Expression_Literal_UserDefined_Struct)(nil), } - file_substrait_algebra_proto_msgTypes[92].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[97].OneofWrappers = []any{ (*Expression_WindowFunction_Bound_Preceding_)(nil), (*Expression_WindowFunction_Bound_Following_)(nil), (*Expression_WindowFunction_Bound_CurrentRow_)(nil), (*Expression_WindowFunction_Bound_Unbounded_)(nil), } - file_substrait_algebra_proto_msgTypes[105].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[110].OneofWrappers = []any{ (*Expression_MaskExpression_Select_Struct)(nil), (*Expression_MaskExpression_Select_List)(nil), (*Expression_MaskExpression_Select_Map)(nil), } - file_substrait_algebra_proto_msgTypes[109].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[114].OneofWrappers = []any{ (*Expression_MaskExpression_MapSelect_Key)(nil), (*Expression_MaskExpression_MapSelect_Expression)(nil), } - file_substrait_algebra_proto_msgTypes[110].OneofWrappers = []any{ + file_substrait_algebra_proto_msgTypes[115].OneofWrappers = []any{ (*Expression_MaskExpression_ListSelect_ListSelectItem_Item)(nil), (*Expression_MaskExpression_ListSelect_ListSelectItem_Slice)(nil), } @@ -13148,8 +13980,8 @@ func file_substrait_algebra_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_substrait_algebra_proto_rawDesc, - NumEnums: 19, - NumMessages: 121, + NumEnums: 20, + NumMessages: 126, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/capabilities.pb.go b/proto/capabilities.pb.go index 07bac5b..20fa251 100644 --- a/proto/capabilities.pb.go +++ b/proto/capabilities.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/capabilities.proto @@ -24,10 +24,7 @@ const ( // Defines a set of Capabilities that a system (producer or consumer) supports. type Capabilities struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of Substrait versions this system supports SubstraitVersions []string `protobuf:"bytes,1,rep,name=substrait_versions,json=substraitVersions,proto3" json:"substrait_versions,omitempty"` // list of com.google.Any message types this system supports for advanced @@ -35,6 +32,8 @@ type Capabilities struct { AdvancedExtensionTypeUrls []string `protobuf:"bytes,2,rep,name=advanced_extension_type_urls,json=advancedExtensionTypeUrls,proto3" json:"advanced_extension_type_urls,omitempty"` // list of simple extensions this system supports. SimpleExtensions []*Capabilities_SimpleExtension `protobuf:"bytes,3,rep,name=simple_extensions,json=simpleExtensions,proto3" json:"simple_extensions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Capabilities) Reset() { @@ -89,14 +88,13 @@ func (x *Capabilities) GetSimpleExtensions() []*Capabilities_SimpleExtension { } type Capabilities_SimpleExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` - FunctionKeys []string `protobuf:"bytes,2,rep,name=function_keys,json=functionKeys,proto3" json:"function_keys,omitempty"` - TypeKeys []string `protobuf:"bytes,3,rep,name=type_keys,json=typeKeys,proto3" json:"type_keys,omitempty"` - TypeVariationKeys []string `protobuf:"bytes,4,rep,name=type_variation_keys,json=typeVariationKeys,proto3" json:"type_variation_keys,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + FunctionKeys []string `protobuf:"bytes,2,rep,name=function_keys,json=functionKeys,proto3" json:"function_keys,omitempty"` + TypeKeys []string `protobuf:"bytes,3,rep,name=type_keys,json=typeKeys,proto3" json:"type_keys,omitempty"` + TypeVariationKeys []string `protobuf:"bytes,4,rep,name=type_variation_keys,json=typeVariationKeys,proto3" json:"type_variation_keys,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Capabilities_SimpleExtension) Reset() { diff --git a/proto/extended_expression.pb.go b/proto/extended_expression.pb.go index 3f95a7c..bd81bfb 100644 --- a/proto/extended_expression.pb.go +++ b/proto/extended_expression.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/extended_expression.proto @@ -24,17 +24,16 @@ const ( ) type ExpressionReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to ExprType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to ExprType: // // *ExpressionReference_Expression // *ExpressionReference_Measure ExprType isExpressionReference_ExprType `protobuf_oneof:"expr_type"` // Field names in depth-first order - OutputNames []string `protobuf:"bytes,3,rep,name=output_names,json=outputNames,proto3" json:"output_names,omitempty"` + OutputNames []string `protobuf:"bytes,3,rep,name=output_names,json=outputNames,proto3" json:"output_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExpressionReference) Reset() { @@ -67,23 +66,27 @@ func (*ExpressionReference) Descriptor() ([]byte, []int) { return file_substrait_extended_expression_proto_rawDescGZIP(), []int{0} } -func (m *ExpressionReference) GetExprType() isExpressionReference_ExprType { - if m != nil { - return m.ExprType +func (x *ExpressionReference) GetExprType() isExpressionReference_ExprType { + if x != nil { + return x.ExprType } return nil } func (x *ExpressionReference) GetExpression() *Expression { - if x, ok := x.GetExprType().(*ExpressionReference_Expression); ok { - return x.Expression + if x != nil { + if x, ok := x.ExprType.(*ExpressionReference_Expression); ok { + return x.Expression + } } return nil } func (x *ExpressionReference) GetMeasure() *AggregateFunction { - if x, ok := x.GetExprType().(*ExpressionReference_Measure); ok { - return x.Measure + if x != nil { + if x, ok := x.ExprType.(*ExpressionReference_Measure); ok { + return x.Measure + } } return nil } @@ -114,10 +117,7 @@ func (*ExpressionReference_Measure) isExpressionReference_ExprType() {} // Describe a set of operations to complete. // For compactness sake, identifiers are normalized at the plan level. type ExtendedExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Substrait version of the expression. Optional up to 0.17.0, required for later // versions. Version *Version `protobuf:"bytes,7,opt,name=version,proto3" json:"version,omitempty"` @@ -136,6 +136,8 @@ type ExtendedExpression struct { // unused. In many cases, a consumer may be able to work with a plan even if // one or more message types defined here are unknown. ExpectedTypeUrls []string `protobuf:"bytes,6,rep,name=expected_type_urls,json=expectedTypeUrls,proto3" json:"expected_type_urls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExtendedExpression) Reset() { diff --git a/proto/extensions/extensions.pb.go b/proto/extensions/extensions.pb.go index 12dcbb3..b0a3f59 100644 --- a/proto/extensions/extensions.pb.go +++ b/proto/extensions/extensions.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/extensions/extensions.proto @@ -24,16 +24,15 @@ const ( ) type SimpleExtensionURI struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A surrogate key used in the context of a single plan used to reference the // URI associated with an extension. ExtensionUriAnchor uint32 `protobuf:"varint,1,opt,name=extension_uri_anchor,json=extensionUriAnchor,proto3" json:"extension_uri_anchor,omitempty"` // The URI where this extension YAML can be retrieved. This is the "namespace" // of this extension. - Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleExtensionURI) Reset() { @@ -83,16 +82,15 @@ func (x *SimpleExtensionURI) GetUri() string { // Describes a mapping between a specific extension entity and the uri where // that extension can be found. type SimpleExtensionDeclaration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to MappingType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to MappingType: // // *SimpleExtensionDeclaration_ExtensionType_ // *SimpleExtensionDeclaration_ExtensionTypeVariation_ // *SimpleExtensionDeclaration_ExtensionFunction_ - MappingType isSimpleExtensionDeclaration_MappingType `protobuf_oneof:"mapping_type"` + MappingType isSimpleExtensionDeclaration_MappingType `protobuf_oneof:"mapping_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleExtensionDeclaration) Reset() { @@ -125,30 +123,36 @@ func (*SimpleExtensionDeclaration) Descriptor() ([]byte, []int) { return file_substrait_extensions_extensions_proto_rawDescGZIP(), []int{1} } -func (m *SimpleExtensionDeclaration) GetMappingType() isSimpleExtensionDeclaration_MappingType { - if m != nil { - return m.MappingType +func (x *SimpleExtensionDeclaration) GetMappingType() isSimpleExtensionDeclaration_MappingType { + if x != nil { + return x.MappingType } return nil } func (x *SimpleExtensionDeclaration) GetExtensionType() *SimpleExtensionDeclaration_ExtensionType { - if x, ok := x.GetMappingType().(*SimpleExtensionDeclaration_ExtensionType_); ok { - return x.ExtensionType + if x != nil { + if x, ok := x.MappingType.(*SimpleExtensionDeclaration_ExtensionType_); ok { + return x.ExtensionType + } } return nil } func (x *SimpleExtensionDeclaration) GetExtensionTypeVariation() *SimpleExtensionDeclaration_ExtensionTypeVariation { - if x, ok := x.GetMappingType().(*SimpleExtensionDeclaration_ExtensionTypeVariation_); ok { - return x.ExtensionTypeVariation + if x != nil { + if x, ok := x.MappingType.(*SimpleExtensionDeclaration_ExtensionTypeVariation_); ok { + return x.ExtensionTypeVariation + } } return nil } func (x *SimpleExtensionDeclaration) GetExtensionFunction() *SimpleExtensionDeclaration_ExtensionFunction { - if x, ok := x.GetMappingType().(*SimpleExtensionDeclaration_ExtensionFunction_); ok { - return x.ExtensionFunction + if x != nil { + if x, ok := x.MappingType.(*SimpleExtensionDeclaration_ExtensionFunction_); ok { + return x.ExtensionFunction + } } return nil } @@ -179,15 +183,14 @@ func (*SimpleExtensionDeclaration_ExtensionFunction_) isSimpleExtensionDeclarati // A generic object that can be used to embed additional extension information // into the serialized substrait plan. type AdvancedExtension struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optimization is helpful information that don't influence semantics. May // be ignored by a consumer. Optimization []*anypb.Any `protobuf:"bytes,1,rep,name=optimization,proto3" json:"optimization,omitempty"` // An enhancement alter semantics. Cannot be ignored by a consumer. - Enhancement *anypb.Any `protobuf:"bytes,2,opt,name=enhancement,proto3" json:"enhancement,omitempty"` + Enhancement *anypb.Any `protobuf:"bytes,2,opt,name=enhancement,proto3" json:"enhancement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AdvancedExtension) Reset() { @@ -236,17 +239,16 @@ func (x *AdvancedExtension) GetEnhancement() *anypb.Any { // Describes a Type type SimpleExtensionDeclaration_ExtensionType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // references the extension_uri_anchor defined for a specific extension URI. ExtensionUriReference uint32 `protobuf:"varint,1,opt,name=extension_uri_reference,json=extensionUriReference,proto3" json:"extension_uri_reference,omitempty"` // A surrogate key used in the context of a single plan to reference a // specific extension type TypeAnchor uint32 `protobuf:"varint,2,opt,name=type_anchor,json=typeAnchor,proto3" json:"type_anchor,omitempty"` // the name of the type in the defined extension YAML. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleExtensionDeclaration_ExtensionType) Reset() { @@ -301,17 +303,16 @@ func (x *SimpleExtensionDeclaration_ExtensionType) GetName() string { } type SimpleExtensionDeclaration_ExtensionTypeVariation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // references the extension_uri_anchor defined for a specific extension URI. ExtensionUriReference uint32 `protobuf:"varint,1,opt,name=extension_uri_reference,json=extensionUriReference,proto3" json:"extension_uri_reference,omitempty"` // A surrogate key used in the context of a single plan to reference a // specific type variation TypeVariationAnchor uint32 `protobuf:"varint,2,opt,name=type_variation_anchor,json=typeVariationAnchor,proto3" json:"type_variation_anchor,omitempty"` // the name of the type in the defined extension YAML. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleExtensionDeclaration_ExtensionTypeVariation) Reset() { @@ -366,17 +367,16 @@ func (x *SimpleExtensionDeclaration_ExtensionTypeVariation) GetName() string { } type SimpleExtensionDeclaration_ExtensionFunction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // references the extension_uri_anchor defined for a specific extension URI. ExtensionUriReference uint32 `protobuf:"varint,1,opt,name=extension_uri_reference,json=extensionUriReference,proto3" json:"extension_uri_reference,omitempty"` // A surrogate key used in the context of a single plan to reference a // specific function FunctionAnchor uint32 `protobuf:"varint,2,opt,name=function_anchor,json=functionAnchor,proto3" json:"function_anchor,omitempty"` // A function signature compound name - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimpleExtensionDeclaration_ExtensionFunction) Reset() { diff --git a/proto/function.pb.go b/proto/function.pb.go index 70435f1..531d5ed 100644 --- a/proto/function.pb.go +++ b/proto/function.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/function.proto @@ -174,9 +174,9 @@ func (FunctionSignature_Implementation_Type) EnumDescriptor() ([]byte, []int) { // List of function signatures available. type FunctionSignature struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature) Reset() { @@ -210,10 +210,7 @@ func (*FunctionSignature) Descriptor() ([]byte, []int) { } type FunctionSignature_FinalArgVariadic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the minimum number of arguments allowed for the list of final arguments // (inclusive). MinArgs int64 `protobuf:"varint,1,opt,name=min_args,json=minArgs,proto3" json:"min_args,omitempty"` @@ -221,7 +218,9 @@ type FunctionSignature_FinalArgVariadic struct { // (exclusive) MaxArgs int64 `protobuf:"varint,2,opt,name=max_args,json=maxArgs,proto3" json:"max_args,omitempty"` // the type of parameterized type consistency - Consistency FunctionSignature_FinalArgVariadic_ParameterConsistency `protobuf:"varint,3,opt,name=consistency,proto3,enum=substrait.FunctionSignature_FinalArgVariadic_ParameterConsistency" json:"consistency,omitempty"` + Consistency FunctionSignature_FinalArgVariadic_ParameterConsistency `protobuf:"varint,3,opt,name=consistency,proto3,enum=substrait.FunctionSignature_FinalArgVariadic_ParameterConsistency" json:"consistency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_FinalArgVariadic) Reset() { @@ -276,9 +275,9 @@ func (x *FunctionSignature_FinalArgVariadic) GetConsistency() FunctionSignature_ } type FunctionSignature_FinalArgNormal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_FinalArgNormal) Reset() { @@ -312,22 +311,21 @@ func (*FunctionSignature_FinalArgNormal) Descriptor() ([]byte, []int) { } type FunctionSignature_Scalar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Arguments []*FunctionSignature_Argument `protobuf:"bytes,2,rep,name=arguments,proto3" json:"arguments,omitempty"` Name []string `protobuf:"bytes,3,rep,name=name,proto3" json:"name,omitempty"` Description *FunctionSignature_Description `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` Deterministic bool `protobuf:"varint,7,opt,name=deterministic,proto3" json:"deterministic,omitempty"` SessionDependent bool `protobuf:"varint,8,opt,name=session_dependent,json=sessionDependent,proto3" json:"session_dependent,omitempty"` OutputType *DerivationExpression `protobuf:"bytes,9,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"` - // Types that are assignable to FinalVariableBehavior: + // Types that are valid to be assigned to FinalVariableBehavior: // // *FunctionSignature_Scalar_Variadic // *FunctionSignature_Scalar_Normal FinalVariableBehavior isFunctionSignature_Scalar_FinalVariableBehavior `protobuf_oneof:"final_variable_behavior"` Implementations []*FunctionSignature_Implementation `protobuf:"bytes,12,rep,name=implementations,proto3" json:"implementations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Scalar) Reset() { @@ -402,23 +400,27 @@ func (x *FunctionSignature_Scalar) GetOutputType() *DerivationExpression { return nil } -func (m *FunctionSignature_Scalar) GetFinalVariableBehavior() isFunctionSignature_Scalar_FinalVariableBehavior { - if m != nil { - return m.FinalVariableBehavior +func (x *FunctionSignature_Scalar) GetFinalVariableBehavior() isFunctionSignature_Scalar_FinalVariableBehavior { + if x != nil { + return x.FinalVariableBehavior } return nil } func (x *FunctionSignature_Scalar) GetVariadic() *FunctionSignature_FinalArgVariadic { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Scalar_Variadic); ok { - return x.Variadic + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Scalar_Variadic); ok { + return x.Variadic + } } return nil } func (x *FunctionSignature_Scalar) GetNormal() *FunctionSignature_FinalArgNormal { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Scalar_Normal); ok { - return x.Normal + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Scalar_Normal); ok { + return x.Normal + } } return nil } @@ -447,17 +449,14 @@ func (*FunctionSignature_Scalar_Variadic) isFunctionSignature_Scalar_FinalVariab func (*FunctionSignature_Scalar_Normal) isFunctionSignature_Scalar_FinalVariableBehavior() {} type FunctionSignature_Aggregate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Arguments []*FunctionSignature_Argument `protobuf:"bytes,2,rep,name=arguments,proto3" json:"arguments,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Description *FunctionSignature_Description `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` Deterministic bool `protobuf:"varint,7,opt,name=deterministic,proto3" json:"deterministic,omitempty"` SessionDependent bool `protobuf:"varint,8,opt,name=session_dependent,json=sessionDependent,proto3" json:"session_dependent,omitempty"` OutputType *DerivationExpression `protobuf:"bytes,9,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"` - // Types that are assignable to FinalVariableBehavior: + // Types that are valid to be assigned to FinalVariableBehavior: // // *FunctionSignature_Aggregate_Variadic // *FunctionSignature_Aggregate_Normal @@ -466,6 +465,8 @@ type FunctionSignature_Aggregate struct { MaxSet uint64 `protobuf:"varint,12,opt,name=max_set,json=maxSet,proto3" json:"max_set,omitempty"` IntermediateType *Type `protobuf:"bytes,13,opt,name=intermediate_type,json=intermediateType,proto3" json:"intermediate_type,omitempty"` Implementations []*FunctionSignature_Implementation `protobuf:"bytes,15,rep,name=implementations,proto3" json:"implementations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Aggregate) Reset() { @@ -540,23 +541,27 @@ func (x *FunctionSignature_Aggregate) GetOutputType() *DerivationExpression { return nil } -func (m *FunctionSignature_Aggregate) GetFinalVariableBehavior() isFunctionSignature_Aggregate_FinalVariableBehavior { - if m != nil { - return m.FinalVariableBehavior +func (x *FunctionSignature_Aggregate) GetFinalVariableBehavior() isFunctionSignature_Aggregate_FinalVariableBehavior { + if x != nil { + return x.FinalVariableBehavior } return nil } func (x *FunctionSignature_Aggregate) GetVariadic() *FunctionSignature_FinalArgVariadic { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Aggregate_Variadic); ok { - return x.Variadic + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Aggregate_Variadic); ok { + return x.Variadic + } } return nil } func (x *FunctionSignature_Aggregate) GetNormal() *FunctionSignature_FinalArgNormal { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Aggregate_Normal); ok { - return x.Normal + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Aggregate_Normal); ok { + return x.Normal + } } return nil } @@ -606,10 +611,7 @@ func (*FunctionSignature_Aggregate_Variadic) isFunctionSignature_Aggregate_Final func (*FunctionSignature_Aggregate_Normal) isFunctionSignature_Aggregate_FinalVariableBehavior() {} type FunctionSignature_Window struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Arguments []*FunctionSignature_Argument `protobuf:"bytes,2,rep,name=arguments,proto3" json:"arguments,omitempty"` Name []string `protobuf:"bytes,3,rep,name=name,proto3" json:"name,omitempty"` Description *FunctionSignature_Description `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` @@ -617,7 +619,7 @@ type FunctionSignature_Window struct { SessionDependent bool `protobuf:"varint,8,opt,name=session_dependent,json=sessionDependent,proto3" json:"session_dependent,omitempty"` IntermediateType *DerivationExpression `protobuf:"bytes,9,opt,name=intermediate_type,json=intermediateType,proto3" json:"intermediate_type,omitempty"` OutputType *DerivationExpression `protobuf:"bytes,10,opt,name=output_type,json=outputType,proto3" json:"output_type,omitempty"` - // Types that are assignable to FinalVariableBehavior: + // Types that are valid to be assigned to FinalVariableBehavior: // // *FunctionSignature_Window_Variadic // *FunctionSignature_Window_Normal @@ -626,6 +628,8 @@ type FunctionSignature_Window struct { MaxSet uint64 `protobuf:"varint,12,opt,name=max_set,json=maxSet,proto3" json:"max_set,omitempty"` WindowType FunctionSignature_Window_WindowType `protobuf:"varint,14,opt,name=window_type,json=windowType,proto3,enum=substrait.FunctionSignature_Window_WindowType" json:"window_type,omitempty"` Implementations []*FunctionSignature_Implementation `protobuf:"bytes,15,rep,name=implementations,proto3" json:"implementations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Window) Reset() { @@ -707,23 +711,27 @@ func (x *FunctionSignature_Window) GetOutputType() *DerivationExpression { return nil } -func (m *FunctionSignature_Window) GetFinalVariableBehavior() isFunctionSignature_Window_FinalVariableBehavior { - if m != nil { - return m.FinalVariableBehavior +func (x *FunctionSignature_Window) GetFinalVariableBehavior() isFunctionSignature_Window_FinalVariableBehavior { + if x != nil { + return x.FinalVariableBehavior } return nil } func (x *FunctionSignature_Window) GetVariadic() *FunctionSignature_FinalArgVariadic { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Window_Variadic); ok { - return x.Variadic + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Window_Variadic); ok { + return x.Variadic + } } return nil } func (x *FunctionSignature_Window) GetNormal() *FunctionSignature_FinalArgNormal { - if x, ok := x.GetFinalVariableBehavior().(*FunctionSignature_Window_Normal); ok { - return x.Normal + if x != nil { + if x, ok := x.FinalVariableBehavior.(*FunctionSignature_Window_Normal); ok { + return x.Normal + } } return nil } @@ -773,12 +781,11 @@ func (*FunctionSignature_Window_Variadic) isFunctionSignature_Window_FinalVariab func (*FunctionSignature_Window_Normal) isFunctionSignature_Window_FinalVariableBehavior() {} type FunctionSignature_Description struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Language string `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` unknownFields protoimpl.UnknownFields - - Language string `protobuf:"bytes,1,opt,name=language,proto3" json:"language,omitempty"` - Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Description) Reset() { @@ -826,12 +833,11 @@ func (x *FunctionSignature_Description) GetBody() string { } type FunctionSignature_Implementation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type FunctionSignature_Implementation_Type `protobuf:"varint,1,opt,name=type,proto3,enum=substrait.FunctionSignature_Implementation_Type" json:"type,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` unknownFields protoimpl.UnknownFields - - Type FunctionSignature_Implementation_Type `protobuf:"varint,1,opt,name=type,proto3,enum=substrait.FunctionSignature_Implementation_Type" json:"type,omitempty"` - Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Implementation) Reset() { @@ -879,17 +885,16 @@ func (x *FunctionSignature_Implementation) GetUri() string { } type FunctionSignature_Argument struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Types that are assignable to ArgumentKind: + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Types that are valid to be assigned to ArgumentKind: // // *FunctionSignature_Argument_Value // *FunctionSignature_Argument_Type // *FunctionSignature_Argument_Enum - ArgumentKind isFunctionSignature_Argument_ArgumentKind `protobuf_oneof:"argument_kind"` + ArgumentKind isFunctionSignature_Argument_ArgumentKind `protobuf_oneof:"argument_kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Argument) Reset() { @@ -929,30 +934,36 @@ func (x *FunctionSignature_Argument) GetName() string { return "" } -func (m *FunctionSignature_Argument) GetArgumentKind() isFunctionSignature_Argument_ArgumentKind { - if m != nil { - return m.ArgumentKind +func (x *FunctionSignature_Argument) GetArgumentKind() isFunctionSignature_Argument_ArgumentKind { + if x != nil { + return x.ArgumentKind } return nil } func (x *FunctionSignature_Argument) GetValue() *FunctionSignature_Argument_ValueArgument { - if x, ok := x.GetArgumentKind().(*FunctionSignature_Argument_Value); ok { - return x.Value + if x != nil { + if x, ok := x.ArgumentKind.(*FunctionSignature_Argument_Value); ok { + return x.Value + } } return nil } func (x *FunctionSignature_Argument) GetType() *FunctionSignature_Argument_TypeArgument { - if x, ok := x.GetArgumentKind().(*FunctionSignature_Argument_Type); ok { - return x.Type + if x != nil { + if x, ok := x.ArgumentKind.(*FunctionSignature_Argument_Type); ok { + return x.Type + } } return nil } func (x *FunctionSignature_Argument) GetEnum() *FunctionSignature_Argument_EnumArgument { - if x, ok := x.GetArgumentKind().(*FunctionSignature_Argument_Enum); ok { - return x.Enum + if x != nil { + if x, ok := x.ArgumentKind.(*FunctionSignature_Argument_Enum); ok { + return x.Enum + } } return nil } @@ -980,12 +991,11 @@ func (*FunctionSignature_Argument_Type) isFunctionSignature_Argument_ArgumentKin func (*FunctionSignature_Argument_Enum) isFunctionSignature_Argument_ArgumentKind() {} type FunctionSignature_Argument_ValueArgument struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Constant bool `protobuf:"varint,2,opt,name=constant,proto3" json:"constant,omitempty"` unknownFields protoimpl.UnknownFields - - Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Constant bool `protobuf:"varint,2,opt,name=constant,proto3" json:"constant,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Argument_ValueArgument) Reset() { @@ -1033,11 +1043,10 @@ func (x *FunctionSignature_Argument_ValueArgument) GetConstant() bool { } type FunctionSignature_Argument_TypeArgument struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Argument_TypeArgument) Reset() { @@ -1078,12 +1087,11 @@ func (x *FunctionSignature_Argument_TypeArgument) GetType() *ParameterizedType { } type FunctionSignature_Argument_EnumArgument struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Options []string `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Optional bool `protobuf:"varint,2,opt,name=optional,proto3" json:"optional,omitempty"` unknownFields protoimpl.UnknownFields - - Options []string `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` - Optional bool `protobuf:"varint,2,opt,name=optional,proto3" json:"optional,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FunctionSignature_Argument_EnumArgument) Reset() { diff --git a/proto/parameterized_types.pb.go b/proto/parameterized_types.pb.go index eec477e..1a51cca 100644 --- a/proto/parameterized_types.pb.go +++ b/proto/parameterized_types.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/parameterized_types.proto @@ -23,11 +23,8 @@ const ( ) type ParameterizedType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: // // *ParameterizedType_Bool // *ParameterizedType_I8 @@ -58,7 +55,9 @@ type ParameterizedType struct { // *ParameterizedType_UserDefined // *ParameterizedType_UserDefinedPointer // *ParameterizedType_TypeParameter_ - Kind isParameterizedType_Kind `protobuf_oneof:"kind"` + Kind isParameterizedType_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType) Reset() { @@ -91,215 +90,273 @@ func (*ParameterizedType) Descriptor() ([]byte, []int) { return file_substrait_parameterized_types_proto_rawDescGZIP(), []int{0} } -func (m *ParameterizedType) GetKind() isParameterizedType_Kind { - if m != nil { - return m.Kind +func (x *ParameterizedType) GetKind() isParameterizedType_Kind { + if x != nil { + return x.Kind } return nil } func (x *ParameterizedType) GetBool() *Type_Boolean { - if x, ok := x.GetKind().(*ParameterizedType_Bool); ok { - return x.Bool + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Bool); ok { + return x.Bool + } } return nil } func (x *ParameterizedType) GetI8() *Type_I8 { - if x, ok := x.GetKind().(*ParameterizedType_I8); ok { - return x.I8 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_I8); ok { + return x.I8 + } } return nil } func (x *ParameterizedType) GetI16() *Type_I16 { - if x, ok := x.GetKind().(*ParameterizedType_I16); ok { - return x.I16 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_I16); ok { + return x.I16 + } } return nil } func (x *ParameterizedType) GetI32() *Type_I32 { - if x, ok := x.GetKind().(*ParameterizedType_I32); ok { - return x.I32 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_I32); ok { + return x.I32 + } } return nil } func (x *ParameterizedType) GetI64() *Type_I64 { - if x, ok := x.GetKind().(*ParameterizedType_I64); ok { - return x.I64 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_I64); ok { + return x.I64 + } } return nil } func (x *ParameterizedType) GetFp32() *Type_FP32 { - if x, ok := x.GetKind().(*ParameterizedType_Fp32); ok { - return x.Fp32 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Fp32); ok { + return x.Fp32 + } } return nil } func (x *ParameterizedType) GetFp64() *Type_FP64 { - if x, ok := x.GetKind().(*ParameterizedType_Fp64); ok { - return x.Fp64 + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Fp64); ok { + return x.Fp64 + } } return nil } func (x *ParameterizedType) GetString_() *Type_String { - if x, ok := x.GetKind().(*ParameterizedType_String_); ok { - return x.String_ + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_String_); ok { + return x.String_ + } } return nil } func (x *ParameterizedType) GetBinary() *Type_Binary { - if x, ok := x.GetKind().(*ParameterizedType_Binary); ok { - return x.Binary + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Binary); ok { + return x.Binary + } } return nil } // Deprecated: Marked as deprecated in substrait/parameterized_types.proto. func (x *ParameterizedType) GetTimestamp() *Type_Timestamp { - if x, ok := x.GetKind().(*ParameterizedType_Timestamp); ok { - return x.Timestamp + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Timestamp); ok { + return x.Timestamp + } } return nil } func (x *ParameterizedType) GetDate() *Type_Date { - if x, ok := x.GetKind().(*ParameterizedType_Date); ok { - return x.Date + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Date); ok { + return x.Date + } } return nil } func (x *ParameterizedType) GetTime() *Type_Time { - if x, ok := x.GetKind().(*ParameterizedType_Time); ok { - return x.Time + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Time); ok { + return x.Time + } } return nil } func (x *ParameterizedType) GetIntervalYear() *Type_IntervalYear { - if x, ok := x.GetKind().(*ParameterizedType_IntervalYear); ok { - return x.IntervalYear + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_IntervalYear); ok { + return x.IntervalYear + } } return nil } func (x *ParameterizedType) GetIntervalDay() *ParameterizedType_ParameterizedIntervalDay { - if x, ok := x.GetKind().(*ParameterizedType_IntervalDay); ok { - return x.IntervalDay + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_IntervalDay); ok { + return x.IntervalDay + } } return nil } func (x *ParameterizedType) GetIntervalCompound() *ParameterizedType_ParameterizedIntervalCompound { - if x, ok := x.GetKind().(*ParameterizedType_IntervalCompound); ok { - return x.IntervalCompound + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_IntervalCompound); ok { + return x.IntervalCompound + } } return nil } // Deprecated: Marked as deprecated in substrait/parameterized_types.proto. func (x *ParameterizedType) GetTimestampTz() *Type_TimestampTZ { - if x, ok := x.GetKind().(*ParameterizedType_TimestampTz); ok { - return x.TimestampTz + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_TimestampTz); ok { + return x.TimestampTz + } } return nil } func (x *ParameterizedType) GetUuid() *Type_UUID { - if x, ok := x.GetKind().(*ParameterizedType_Uuid); ok { - return x.Uuid + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Uuid); ok { + return x.Uuid + } } return nil } func (x *ParameterizedType) GetFixedChar() *ParameterizedType_ParameterizedFixedChar { - if x, ok := x.GetKind().(*ParameterizedType_FixedChar); ok { - return x.FixedChar + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_FixedChar); ok { + return x.FixedChar + } } return nil } func (x *ParameterizedType) GetVarchar() *ParameterizedType_ParameterizedVarChar { - if x, ok := x.GetKind().(*ParameterizedType_Varchar); ok { - return x.Varchar + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Varchar); ok { + return x.Varchar + } } return nil } func (x *ParameterizedType) GetFixedBinary() *ParameterizedType_ParameterizedFixedBinary { - if x, ok := x.GetKind().(*ParameterizedType_FixedBinary); ok { - return x.FixedBinary + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_FixedBinary); ok { + return x.FixedBinary + } } return nil } func (x *ParameterizedType) GetDecimal() *ParameterizedType_ParameterizedDecimal { - if x, ok := x.GetKind().(*ParameterizedType_Decimal); ok { - return x.Decimal + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Decimal); ok { + return x.Decimal + } } return nil } func (x *ParameterizedType) GetPrecisionTimestamp() *ParameterizedType_ParameterizedPrecisionTimestamp { - if x, ok := x.GetKind().(*ParameterizedType_PrecisionTimestamp); ok { - return x.PrecisionTimestamp + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_PrecisionTimestamp); ok { + return x.PrecisionTimestamp + } } return nil } func (x *ParameterizedType) GetPrecisionTimestampTz() *ParameterizedType_ParameterizedPrecisionTimestampTZ { - if x, ok := x.GetKind().(*ParameterizedType_PrecisionTimestampTz); ok { - return x.PrecisionTimestampTz + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_PrecisionTimestampTz); ok { + return x.PrecisionTimestampTz + } } return nil } func (x *ParameterizedType) GetStruct() *ParameterizedType_ParameterizedStruct { - if x, ok := x.GetKind().(*ParameterizedType_Struct); ok { - return x.Struct + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Struct); ok { + return x.Struct + } } return nil } func (x *ParameterizedType) GetList() *ParameterizedType_ParameterizedList { - if x, ok := x.GetKind().(*ParameterizedType_List); ok { - return x.List + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_List); ok { + return x.List + } } return nil } func (x *ParameterizedType) GetMap() *ParameterizedType_ParameterizedMap { - if x, ok := x.GetKind().(*ParameterizedType_Map); ok { - return x.Map + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_Map); ok { + return x.Map + } } return nil } func (x *ParameterizedType) GetUserDefined() *ParameterizedType_ParameterizedUserDefined { - if x, ok := x.GetKind().(*ParameterizedType_UserDefined); ok { - return x.UserDefined + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_UserDefined); ok { + return x.UserDefined + } } return nil } // Deprecated: Marked as deprecated in substrait/parameterized_types.proto. func (x *ParameterizedType) GetUserDefinedPointer() uint32 { - if x, ok := x.GetKind().(*ParameterizedType_UserDefinedPointer); ok { - return x.UserDefinedPointer + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_UserDefinedPointer); ok { + return x.UserDefinedPointer + } } return 0 } func (x *ParameterizedType) GetTypeParameter() *ParameterizedType_TypeParameter { - if x, ok := x.GetKind().(*ParameterizedType_TypeParameter_); ok { - return x.TypeParameter + if x != nil { + if x, ok := x.Kind.(*ParameterizedType_TypeParameter_); ok { + return x.TypeParameter + } } return nil } @@ -494,12 +551,11 @@ func (*ParameterizedType_UserDefinedPointer) isParameterizedType_Kind() {} func (*ParameterizedType_TypeParameter_) isParameterizedType_Kind() {} type ParameterizedType_TypeParameter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Bounds []*ParameterizedType `protobuf:"bytes,2,rep,name=bounds,proto3" json:"bounds,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Bounds []*ParameterizedType `protobuf:"bytes,2,rep,name=bounds,proto3" json:"bounds,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_TypeParameter) Reset() { @@ -547,13 +603,12 @@ func (x *ParameterizedType_TypeParameter) GetBounds() []*ParameterizedType { } type ParameterizedType_IntegerParameter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` RangeStartInclusive *ParameterizedType_NullableInteger `protobuf:"bytes,2,opt,name=range_start_inclusive,json=rangeStartInclusive,proto3" json:"range_start_inclusive,omitempty"` RangeEndExclusive *ParameterizedType_NullableInteger `protobuf:"bytes,3,opt,name=range_end_exclusive,json=rangeEndExclusive,proto3" json:"range_end_exclusive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_IntegerParameter) Reset() { @@ -608,11 +663,10 @@ func (x *ParameterizedType_IntegerParameter) GetRangeEndExclusive() *Parameteriz } type ParameterizedType_NullableInteger struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_NullableInteger) Reset() { @@ -653,13 +707,12 @@ func (x *ParameterizedType_NullableInteger) GetValue() int64 { } type ParameterizedType_ParameterizedFixedChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Length *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedFixedChar) Reset() { @@ -714,13 +767,12 @@ func (x *ParameterizedType_ParameterizedFixedChar) GetNullability() Type_Nullabi } type ParameterizedType_ParameterizedVarChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Length *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedVarChar) Reset() { @@ -775,13 +827,12 @@ func (x *ParameterizedType_ParameterizedVarChar) GetNullability() Type_Nullabili } type ParameterizedType_ParameterizedFixedBinary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Length *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedFixedBinary) Reset() { @@ -836,14 +887,13 @@ func (x *ParameterizedType_ParameterizedFixedBinary) GetNullability() Type_Nulla } type ParameterizedType_ParameterizedDecimal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Scale *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=scale,proto3" json:"scale,omitempty"` Precision *ParameterizedType_IntegerOption `protobuf:"bytes,2,opt,name=precision,proto3" json:"precision,omitempty"` VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedDecimal) Reset() { @@ -905,13 +955,12 @@ func (x *ParameterizedType_ParameterizedDecimal) GetNullability() Type_Nullabili } type ParameterizedType_ParameterizedIntervalDay struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Precision *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedIntervalDay) Reset() { @@ -966,13 +1015,12 @@ func (x *ParameterizedType_ParameterizedIntervalDay) GetNullability() Type_Nulla } type ParameterizedType_ParameterizedIntervalCompound struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Precision *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedIntervalCompound) Reset() { @@ -1027,13 +1075,12 @@ func (x *ParameterizedType_ParameterizedIntervalCompound) GetNullability() Type_ } type ParameterizedType_ParameterizedPrecisionTimestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Precision *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedPrecisionTimestamp) Reset() { @@ -1088,13 +1135,12 @@ func (x *ParameterizedType_ParameterizedPrecisionTimestamp) GetNullability() Typ } type ParameterizedType_ParameterizedPrecisionTimestampTZ struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Precision *ParameterizedType_IntegerOption `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedPrecisionTimestampTZ) Reset() { @@ -1149,13 +1195,12 @@ func (x *ParameterizedType_ParameterizedPrecisionTimestampTZ) GetNullability() T } type ParameterizedType_ParameterizedStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Types []*ParameterizedType `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Types []*ParameterizedType `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedStruct) Reset() { @@ -1210,13 +1255,12 @@ func (x *ParameterizedType_ParameterizedStruct) GetNullability() Type_Nullabilit } type ParameterizedType_ParameterizedNamedStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // list of names in dfs order - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - Struct *ParameterizedType_ParameterizedStruct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Struct *ParameterizedType_ParameterizedStruct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedNamedStruct) Reset() { @@ -1264,13 +1308,12 @@ func (x *ParameterizedType_ParameterizedNamedStruct) GetStruct() *ParameterizedT } type ParameterizedType_ParameterizedList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type *ParameterizedType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedList) Reset() { @@ -1325,14 +1368,13 @@ func (x *ParameterizedType_ParameterizedList) GetNullability() Type_Nullability } type ParameterizedType_ParameterizedMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *ParameterizedType `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *ParameterizedType `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Key *ParameterizedType `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *ParameterizedType `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedMap) Reset() { @@ -1394,13 +1436,12 @@ func (x *ParameterizedType_ParameterizedMap) GetNullability() Type_Nullability { } type ParameterizedType_ParameterizedUserDefined struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypePointer uint32 `protobuf:"varint,1,opt,name=type_pointer,json=typePointer,proto3" json:"type_pointer,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypePointer uint32 `protobuf:"varint,1,opt,name=type_pointer,json=typePointer,proto3" json:"type_pointer,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_ParameterizedUserDefined) Reset() { @@ -1455,15 +1496,14 @@ func (x *ParameterizedType_ParameterizedUserDefined) GetNullability() Type_Nulla } type ParameterizedType_IntegerOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to IntegerType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to IntegerType: // // *ParameterizedType_IntegerOption_Literal // *ParameterizedType_IntegerOption_Parameter - IntegerType isParameterizedType_IntegerOption_IntegerType `protobuf_oneof:"integer_type"` + IntegerType isParameterizedType_IntegerOption_IntegerType `protobuf_oneof:"integer_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ParameterizedType_IntegerOption) Reset() { @@ -1496,23 +1536,27 @@ func (*ParameterizedType_IntegerOption) Descriptor() ([]byte, []int) { return file_substrait_parameterized_types_proto_rawDescGZIP(), []int{0, 16} } -func (m *ParameterizedType_IntegerOption) GetIntegerType() isParameterizedType_IntegerOption_IntegerType { - if m != nil { - return m.IntegerType +func (x *ParameterizedType_IntegerOption) GetIntegerType() isParameterizedType_IntegerOption_IntegerType { + if x != nil { + return x.IntegerType } return nil } func (x *ParameterizedType_IntegerOption) GetLiteral() int32 { - if x, ok := x.GetIntegerType().(*ParameterizedType_IntegerOption_Literal); ok { - return x.Literal + if x != nil { + if x, ok := x.IntegerType.(*ParameterizedType_IntegerOption_Literal); ok { + return x.Literal + } } return 0 } func (x *ParameterizedType_IntegerOption) GetParameter() *ParameterizedType_IntegerParameter { - if x, ok := x.GetIntegerType().(*ParameterizedType_IntegerOption_Parameter); ok { - return x.Parameter + if x != nil { + if x, ok := x.IntegerType.(*ParameterizedType_IntegerOption_Parameter); ok { + return x.Parameter + } } return nil } diff --git a/proto/plan.pb.go b/proto/plan.pb.go index 3273bb9..4e5e507 100644 --- a/proto/plan.pb.go +++ b/proto/plan.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/plan.proto @@ -25,15 +25,14 @@ const ( // Either a relation or root relation type PlanRel struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to RelType: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to RelType: // // *PlanRel_Rel // *PlanRel_Root - RelType isPlanRel_RelType `protobuf_oneof:"rel_type"` + RelType isPlanRel_RelType `protobuf_oneof:"rel_type"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlanRel) Reset() { @@ -66,23 +65,27 @@ func (*PlanRel) Descriptor() ([]byte, []int) { return file_substrait_plan_proto_rawDescGZIP(), []int{0} } -func (m *PlanRel) GetRelType() isPlanRel_RelType { - if m != nil { - return m.RelType +func (x *PlanRel) GetRelType() isPlanRel_RelType { + if x != nil { + return x.RelType } return nil } func (x *PlanRel) GetRel() *Rel { - if x, ok := x.GetRelType().(*PlanRel_Rel); ok { - return x.Rel + if x != nil { + if x, ok := x.RelType.(*PlanRel_Rel); ok { + return x.Rel + } } return nil } func (x *PlanRel) GetRoot() *RelRoot { - if x, ok := x.GetRelType().(*PlanRel_Root); ok { - return x.Root + if x != nil { + if x, ok := x.RelType.(*PlanRel_Root); ok { + return x.Root + } } return nil } @@ -108,10 +111,7 @@ func (*PlanRel_Root) isPlanRel_RelType() {} // Describe a set of operations to complete. // For compactness sake, identifiers are normalized at the plan level. type Plan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Substrait version of the plan. Optional up to 0.17.0, required for later // versions. Version *Version `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` @@ -129,6 +129,8 @@ type Plan struct { // unused. In many cases, a consumer may be able to work with a plan even if // one or more message types defined here are unknown. ExpectedTypeUrls []string `protobuf:"bytes,5,rep,name=expected_type_urls,json=expectedTypeUrls,proto3" json:"expected_type_urls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Plan) Reset() { @@ -209,11 +211,10 @@ func (x *Plan) GetExpectedTypeUrls() []string { // the Substrait version used to deserialize it, such that a consumer can emit // a more helpful error message in this case. type PlanVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Version *Version `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Version *Version `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PlanVersion) Reset() { @@ -254,10 +255,7 @@ func (x *PlanVersion) GetVersion() *Version { } type Version struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Substrait version number. MajorNumber uint32 `protobuf:"varint,1,opt,name=major_number,json=majorNumber,proto3" json:"major_number,omitempty"` MinorNumber uint32 `protobuf:"varint,2,opt,name=minor_number,json=minorNumber,proto3" json:"minor_number,omitempty"` @@ -276,7 +274,9 @@ type Version struct { // it is foreseen that consumers may need to work around bugs in particular // producers in practice, and therefore may need to know which producer // created the plan. - Producer string `protobuf:"bytes,5,opt,name=producer,proto3" json:"producer,omitempty"` + Producer string `protobuf:"bytes,5,opt,name=producer,proto3" json:"producer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Version) Reset() { diff --git a/proto/type.pb.go b/proto/type.pb.go index 38eab06..3b1d5ba 100644 --- a/proto/type.pb.go +++ b/proto/type.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/type.proto @@ -73,11 +73,8 @@ func (Type_Nullability) EnumDescriptor() ([]byte, []int) { } type Type struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: // // *Type_Bool // *Type_I8_ @@ -107,7 +104,9 @@ type Type struct { // *Type_Map_ // *Type_UserDefined_ // *Type_UserDefinedTypeReference - Kind isType_Kind `protobuf_oneof:"kind"` + Kind isType_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type) Reset() { @@ -140,208 +139,264 @@ func (*Type) Descriptor() ([]byte, []int) { return file_substrait_type_proto_rawDescGZIP(), []int{0} } -func (m *Type) GetKind() isType_Kind { - if m != nil { - return m.Kind +func (x *Type) GetKind() isType_Kind { + if x != nil { + return x.Kind } return nil } func (x *Type) GetBool() *Type_Boolean { - if x, ok := x.GetKind().(*Type_Bool); ok { - return x.Bool + if x != nil { + if x, ok := x.Kind.(*Type_Bool); ok { + return x.Bool + } } return nil } func (x *Type) GetI8() *Type_I8 { - if x, ok := x.GetKind().(*Type_I8_); ok { - return x.I8 + if x != nil { + if x, ok := x.Kind.(*Type_I8_); ok { + return x.I8 + } } return nil } func (x *Type) GetI16() *Type_I16 { - if x, ok := x.GetKind().(*Type_I16_); ok { - return x.I16 + if x != nil { + if x, ok := x.Kind.(*Type_I16_); ok { + return x.I16 + } } return nil } func (x *Type) GetI32() *Type_I32 { - if x, ok := x.GetKind().(*Type_I32_); ok { - return x.I32 + if x != nil { + if x, ok := x.Kind.(*Type_I32_); ok { + return x.I32 + } } return nil } func (x *Type) GetI64() *Type_I64 { - if x, ok := x.GetKind().(*Type_I64_); ok { - return x.I64 + if x != nil { + if x, ok := x.Kind.(*Type_I64_); ok { + return x.I64 + } } return nil } func (x *Type) GetFp32() *Type_FP32 { - if x, ok := x.GetKind().(*Type_Fp32); ok { - return x.Fp32 + if x != nil { + if x, ok := x.Kind.(*Type_Fp32); ok { + return x.Fp32 + } } return nil } func (x *Type) GetFp64() *Type_FP64 { - if x, ok := x.GetKind().(*Type_Fp64); ok { - return x.Fp64 + if x != nil { + if x, ok := x.Kind.(*Type_Fp64); ok { + return x.Fp64 + } } return nil } func (x *Type) GetString_() *Type_String { - if x, ok := x.GetKind().(*Type_String_); ok { - return x.String_ + if x != nil { + if x, ok := x.Kind.(*Type_String_); ok { + return x.String_ + } } return nil } func (x *Type) GetBinary() *Type_Binary { - if x, ok := x.GetKind().(*Type_Binary_); ok { - return x.Binary + if x != nil { + if x, ok := x.Kind.(*Type_Binary_); ok { + return x.Binary + } } return nil } // Deprecated: Marked as deprecated in substrait/type.proto. func (x *Type) GetTimestamp() *Type_Timestamp { - if x, ok := x.GetKind().(*Type_Timestamp_); ok { - return x.Timestamp + if x != nil { + if x, ok := x.Kind.(*Type_Timestamp_); ok { + return x.Timestamp + } } return nil } func (x *Type) GetDate() *Type_Date { - if x, ok := x.GetKind().(*Type_Date_); ok { - return x.Date + if x != nil { + if x, ok := x.Kind.(*Type_Date_); ok { + return x.Date + } } return nil } func (x *Type) GetTime() *Type_Time { - if x, ok := x.GetKind().(*Type_Time_); ok { - return x.Time + if x != nil { + if x, ok := x.Kind.(*Type_Time_); ok { + return x.Time + } } return nil } func (x *Type) GetIntervalYear() *Type_IntervalYear { - if x, ok := x.GetKind().(*Type_IntervalYear_); ok { - return x.IntervalYear + if x != nil { + if x, ok := x.Kind.(*Type_IntervalYear_); ok { + return x.IntervalYear + } } return nil } func (x *Type) GetIntervalDay() *Type_IntervalDay { - if x, ok := x.GetKind().(*Type_IntervalDay_); ok { - return x.IntervalDay + if x != nil { + if x, ok := x.Kind.(*Type_IntervalDay_); ok { + return x.IntervalDay + } } return nil } func (x *Type) GetIntervalCompound() *Type_IntervalCompound { - if x, ok := x.GetKind().(*Type_IntervalCompound_); ok { - return x.IntervalCompound + if x != nil { + if x, ok := x.Kind.(*Type_IntervalCompound_); ok { + return x.IntervalCompound + } } return nil } // Deprecated: Marked as deprecated in substrait/type.proto. func (x *Type) GetTimestampTz() *Type_TimestampTZ { - if x, ok := x.GetKind().(*Type_TimestampTz); ok { - return x.TimestampTz + if x != nil { + if x, ok := x.Kind.(*Type_TimestampTz); ok { + return x.TimestampTz + } } return nil } func (x *Type) GetUuid() *Type_UUID { - if x, ok := x.GetKind().(*Type_Uuid); ok { - return x.Uuid + if x != nil { + if x, ok := x.Kind.(*Type_Uuid); ok { + return x.Uuid + } } return nil } func (x *Type) GetFixedChar() *Type_FixedChar { - if x, ok := x.GetKind().(*Type_FixedChar_); ok { - return x.FixedChar + if x != nil { + if x, ok := x.Kind.(*Type_FixedChar_); ok { + return x.FixedChar + } } return nil } func (x *Type) GetVarchar() *Type_VarChar { - if x, ok := x.GetKind().(*Type_Varchar); ok { - return x.Varchar + if x != nil { + if x, ok := x.Kind.(*Type_Varchar); ok { + return x.Varchar + } } return nil } func (x *Type) GetFixedBinary() *Type_FixedBinary { - if x, ok := x.GetKind().(*Type_FixedBinary_); ok { - return x.FixedBinary + if x != nil { + if x, ok := x.Kind.(*Type_FixedBinary_); ok { + return x.FixedBinary + } } return nil } func (x *Type) GetDecimal() *Type_Decimal { - if x, ok := x.GetKind().(*Type_Decimal_); ok { - return x.Decimal + if x != nil { + if x, ok := x.Kind.(*Type_Decimal_); ok { + return x.Decimal + } } return nil } func (x *Type) GetPrecisionTimestamp() *Type_PrecisionTimestamp { - if x, ok := x.GetKind().(*Type_PrecisionTimestamp_); ok { - return x.PrecisionTimestamp + if x != nil { + if x, ok := x.Kind.(*Type_PrecisionTimestamp_); ok { + return x.PrecisionTimestamp + } } return nil } func (x *Type) GetPrecisionTimestampTz() *Type_PrecisionTimestampTZ { - if x, ok := x.GetKind().(*Type_PrecisionTimestampTz); ok { - return x.PrecisionTimestampTz + if x != nil { + if x, ok := x.Kind.(*Type_PrecisionTimestampTz); ok { + return x.PrecisionTimestampTz + } } return nil } func (x *Type) GetStruct() *Type_Struct { - if x, ok := x.GetKind().(*Type_Struct_); ok { - return x.Struct + if x != nil { + if x, ok := x.Kind.(*Type_Struct_); ok { + return x.Struct + } } return nil } func (x *Type) GetList() *Type_List { - if x, ok := x.GetKind().(*Type_List_); ok { - return x.List + if x != nil { + if x, ok := x.Kind.(*Type_List_); ok { + return x.List + } } return nil } func (x *Type) GetMap() *Type_Map { - if x, ok := x.GetKind().(*Type_Map_); ok { - return x.Map + if x != nil { + if x, ok := x.Kind.(*Type_Map_); ok { + return x.Map + } } return nil } func (x *Type) GetUserDefined() *Type_UserDefined { - if x, ok := x.GetKind().(*Type_UserDefined_); ok { - return x.UserDefined + if x != nil { + if x, ok := x.Kind.(*Type_UserDefined_); ok { + return x.UserDefined + } } return nil } // Deprecated: Marked as deprecated in substrait/type.proto. func (x *Type) GetUserDefinedTypeReference() uint32 { - if x, ok := x.GetKind().(*Type_UserDefinedTypeReference); ok { - return x.UserDefinedTypeReference + if x != nil { + if x, ok := x.Kind.(*Type_UserDefinedTypeReference); ok { + return x.UserDefinedTypeReference + } } return 0 } @@ -550,13 +605,12 @@ func (*Type_UserDefinedTypeReference) isType_Kind() {} // * Only struct fields are contained in this field's elements, // * Map keys should be traversed first, then values when producing/consuming type NamedStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // list of names in dfs order - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - Struct *Type_Struct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Struct *Type_Struct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NamedStruct) Reset() { @@ -604,12 +658,11 @@ func (x *NamedStruct) GetStruct() *Type_Struct { } type Type_Boolean struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Boolean) Reset() { @@ -657,12 +710,11 @@ func (x *Type_Boolean) GetNullability() Type_Nullability { } type Type_I8 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_I8) Reset() { @@ -710,12 +762,11 @@ func (x *Type_I8) GetNullability() Type_Nullability { } type Type_I16 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_I16) Reset() { @@ -763,12 +814,11 @@ func (x *Type_I16) GetNullability() Type_Nullability { } type Type_I32 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_I32) Reset() { @@ -816,12 +866,11 @@ func (x *Type_I32) GetNullability() Type_Nullability { } type Type_I64 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_I64) Reset() { @@ -869,12 +918,11 @@ func (x *Type_I64) GetNullability() Type_Nullability { } type Type_FP32 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_FP32) Reset() { @@ -922,12 +970,11 @@ func (x *Type_FP32) GetNullability() Type_Nullability { } type Type_FP64 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_FP64) Reset() { @@ -975,12 +1022,11 @@ func (x *Type_FP64) GetNullability() Type_Nullability { } type Type_String struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_String) Reset() { @@ -1028,12 +1074,11 @@ func (x *Type_String) GetNullability() Type_Nullability { } type Type_Binary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Binary) Reset() { @@ -1081,12 +1126,11 @@ func (x *Type_Binary) GetNullability() Type_Nullability { } type Type_Timestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Timestamp) Reset() { @@ -1134,12 +1178,11 @@ func (x *Type_Timestamp) GetNullability() Type_Nullability { } type Type_Date struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Date) Reset() { @@ -1187,12 +1230,11 @@ func (x *Type_Date) GetNullability() Type_Nullability { } type Type_Time struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Time) Reset() { @@ -1240,12 +1282,11 @@ func (x *Type_Time) GetNullability() Type_Nullability { } type Type_TimestampTZ struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_TimestampTZ) Reset() { @@ -1294,12 +1335,11 @@ func (x *Type_TimestampTZ) GetNullability() Type_Nullability { // An interval consisting of years and months type Type_IntervalYear struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_IntervalYear) Reset() { @@ -1348,15 +1388,14 @@ func (x *Type_IntervalYear) GetNullability() Type_Nullability { // An interval consisting of days, seconds, and microseconds type Type_IntervalDay struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` // Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, etc. // if unset, treat as 6. - Precision *int32 `protobuf:"varint,3,opt,name=precision,proto3,oneof" json:"precision,omitempty"` + Precision *int32 `protobuf:"varint,3,opt,name=precision,proto3,oneof" json:"precision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_IntervalDay) Reset() { @@ -1412,14 +1451,13 @@ func (x *Type_IntervalDay) GetPrecision() int32 { // An interval consisting of the components of both IntervalMonth and IntervalDay type Type_IntervalCompound struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` // Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds, etc. - Precision int32 `protobuf:"varint,3,opt,name=precision,proto3" json:"precision,omitempty"` + Precision int32 `protobuf:"varint,3,opt,name=precision,proto3" json:"precision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_IntervalCompound) Reset() { @@ -1474,12 +1512,11 @@ func (x *Type_IntervalCompound) GetPrecision() int32 { } type Type_UUID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeVariationReference uint32 `protobuf:"varint,1,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,2,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_UUID) Reset() { @@ -1528,13 +1565,12 @@ func (x *Type_UUID) GetNullability() Type_Nullability { // Start compound types. type Type_FixedChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_FixedChar) Reset() { @@ -1589,13 +1625,12 @@ func (x *Type_FixedChar) GetNullability() Type_Nullability { } type Type_VarChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_VarChar) Reset() { @@ -1650,13 +1685,12 @@ func (x *Type_VarChar) GetNullability() Type_Nullability { } type Type_FixedBinary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_FixedBinary) Reset() { @@ -1711,14 +1745,13 @@ func (x *Type_FixedBinary) GetNullability() Type_Nullability { } type Type_Decimal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Scale int32 `protobuf:"varint,1,opt,name=scale,proto3" json:"scale,omitempty"` - Precision int32 `protobuf:"varint,2,opt,name=precision,proto3" json:"precision,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,3,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Scale int32 `protobuf:"varint,1,opt,name=scale,proto3" json:"scale,omitempty"` + Precision int32 `protobuf:"varint,2,opt,name=precision,proto3" json:"precision,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,3,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Decimal) Reset() { @@ -1780,14 +1813,13 @@ func (x *Type_Decimal) GetNullability() Type_Nullability { } type Type_PrecisionTimestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds Precision int32 `protobuf:"varint,1,opt,name=precision,proto3" json:"precision,omitempty"` TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_PrecisionTimestamp) Reset() { @@ -1842,14 +1874,13 @@ func (x *Type_PrecisionTimestamp) GetNullability() Type_Nullability { } type Type_PrecisionTimestampTZ struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Sub-second precision, 0 means the value given is in seconds, 3 is milliseconds, 6 microseconds, 9 is nanoseconds Precision int32 `protobuf:"varint,1,opt,name=precision,proto3" json:"precision,omitempty"` TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_PrecisionTimestampTZ) Reset() { @@ -1904,13 +1935,12 @@ func (x *Type_PrecisionTimestampTZ) GetNullability() Type_Nullability { } type Type_Struct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Types []*Type `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Types []*Type `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Struct) Reset() { @@ -1965,13 +1995,12 @@ func (x *Type_Struct) GetNullability() Type_Nullability { } type Type_List struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type *Type `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type *Type `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_List) Reset() { @@ -2026,14 +2055,13 @@ func (x *Type_List) GetNullability() Type_Nullability { } type Type_Map struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *Type `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *Type `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,3,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Key *Type `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *Type `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,3,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Map) Reset() { @@ -2095,14 +2123,13 @@ func (x *Type_Map) GetNullability() Type_Nullability { } type Type_UserDefined struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypeReference uint32 `protobuf:"varint,1,opt,name=type_reference,json=typeReference,proto3" json:"type_reference,omitempty"` - TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` - TypeParameters []*Type_Parameter `protobuf:"bytes,4,rep,name=type_parameters,json=typeParameters,proto3" json:"type_parameters,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypeReference uint32 `protobuf:"varint,1,opt,name=type_reference,json=typeReference,proto3" json:"type_reference,omitempty"` + TypeVariationReference uint32 `protobuf:"varint,2,opt,name=type_variation_reference,json=typeVariationReference,proto3" json:"type_variation_reference,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + TypeParameters []*Type_Parameter `protobuf:"bytes,4,rep,name=type_parameters,json=typeParameters,proto3" json:"type_parameters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_UserDefined) Reset() { @@ -2164,11 +2191,8 @@ func (x *Type_UserDefined) GetTypeParameters() []*Type_Parameter { } type Type_Parameter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Parameter: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Parameter: // // *Type_Parameter_Null // *Type_Parameter_DataType @@ -2176,7 +2200,9 @@ type Type_Parameter struct { // *Type_Parameter_Integer // *Type_Parameter_Enum // *Type_Parameter_String_ - Parameter isType_Parameter_Parameter `protobuf_oneof:"parameter"` + Parameter isType_Parameter_Parameter `protobuf_oneof:"parameter"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Type_Parameter) Reset() { @@ -2209,51 +2235,63 @@ func (*Type_Parameter) Descriptor() ([]byte, []int) { return file_substrait_type_proto_rawDescGZIP(), []int{0, 27} } -func (m *Type_Parameter) GetParameter() isType_Parameter_Parameter { - if m != nil { - return m.Parameter +func (x *Type_Parameter) GetParameter() isType_Parameter_Parameter { + if x != nil { + return x.Parameter } return nil } func (x *Type_Parameter) GetNull() *emptypb.Empty { - if x, ok := x.GetParameter().(*Type_Parameter_Null); ok { - return x.Null + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_Null); ok { + return x.Null + } } return nil } func (x *Type_Parameter) GetDataType() *Type { - if x, ok := x.GetParameter().(*Type_Parameter_DataType); ok { - return x.DataType + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_DataType); ok { + return x.DataType + } } return nil } func (x *Type_Parameter) GetBoolean() bool { - if x, ok := x.GetParameter().(*Type_Parameter_Boolean); ok { - return x.Boolean + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_Boolean); ok { + return x.Boolean + } } return false } func (x *Type_Parameter) GetInteger() int64 { - if x, ok := x.GetParameter().(*Type_Parameter_Integer); ok { - return x.Integer + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_Integer); ok { + return x.Integer + } } return 0 } func (x *Type_Parameter) GetEnum() string { - if x, ok := x.GetParameter().(*Type_Parameter_Enum); ok { - return x.Enum + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_Enum); ok { + return x.Enum + } } return "" } func (x *Type_Parameter) GetString_() string { - if x, ok := x.GetParameter().(*Type_Parameter_String_); ok { - return x.String_ + if x != nil { + if x, ok := x.Parameter.(*Type_Parameter_String_); ok { + return x.String_ + } } return "" } diff --git a/proto/type_expressions.pb.go b/proto/type_expressions.pb.go index a0dac95..c1d4946 100644 --- a/proto/type_expressions.pb.go +++ b/proto/type_expressions.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: substrait/type_expressions.proto @@ -148,11 +148,8 @@ func (DerivationExpression_BinaryOp_BinaryOpType) EnumDescriptor() ([]byte, []in } type DerivationExpression struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Kind: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Kind: // // *DerivationExpression_Bool // *DerivationExpression_I8 @@ -189,7 +186,9 @@ type DerivationExpression struct { // *DerivationExpression_BinaryOp_ // *DerivationExpression_IfElse_ // *DerivationExpression_ReturnProgram_ - Kind isDerivationExpression_Kind `protobuf_oneof:"kind"` + Kind isDerivationExpression_Kind `protobuf_oneof:"kind"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression) Reset() { @@ -222,257 +221,327 @@ func (*DerivationExpression) Descriptor() ([]byte, []int) { return file_substrait_type_expressions_proto_rawDescGZIP(), []int{0} } -func (m *DerivationExpression) GetKind() isDerivationExpression_Kind { - if m != nil { - return m.Kind +func (x *DerivationExpression) GetKind() isDerivationExpression_Kind { + if x != nil { + return x.Kind } return nil } func (x *DerivationExpression) GetBool() *Type_Boolean { - if x, ok := x.GetKind().(*DerivationExpression_Bool); ok { - return x.Bool + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Bool); ok { + return x.Bool + } } return nil } func (x *DerivationExpression) GetI8() *Type_I8 { - if x, ok := x.GetKind().(*DerivationExpression_I8); ok { - return x.I8 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_I8); ok { + return x.I8 + } } return nil } func (x *DerivationExpression) GetI16() *Type_I16 { - if x, ok := x.GetKind().(*DerivationExpression_I16); ok { - return x.I16 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_I16); ok { + return x.I16 + } } return nil } func (x *DerivationExpression) GetI32() *Type_I32 { - if x, ok := x.GetKind().(*DerivationExpression_I32); ok { - return x.I32 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_I32); ok { + return x.I32 + } } return nil } func (x *DerivationExpression) GetI64() *Type_I64 { - if x, ok := x.GetKind().(*DerivationExpression_I64); ok { - return x.I64 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_I64); ok { + return x.I64 + } } return nil } func (x *DerivationExpression) GetFp32() *Type_FP32 { - if x, ok := x.GetKind().(*DerivationExpression_Fp32); ok { - return x.Fp32 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Fp32); ok { + return x.Fp32 + } } return nil } func (x *DerivationExpression) GetFp64() *Type_FP64 { - if x, ok := x.GetKind().(*DerivationExpression_Fp64); ok { - return x.Fp64 + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Fp64); ok { + return x.Fp64 + } } return nil } func (x *DerivationExpression) GetString_() *Type_String { - if x, ok := x.GetKind().(*DerivationExpression_String_); ok { - return x.String_ + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_String_); ok { + return x.String_ + } } return nil } func (x *DerivationExpression) GetBinary() *Type_Binary { - if x, ok := x.GetKind().(*DerivationExpression_Binary); ok { - return x.Binary + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Binary); ok { + return x.Binary + } } return nil } // Deprecated: Marked as deprecated in substrait/type_expressions.proto. func (x *DerivationExpression) GetTimestamp() *Type_Timestamp { - if x, ok := x.GetKind().(*DerivationExpression_Timestamp); ok { - return x.Timestamp + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Timestamp); ok { + return x.Timestamp + } } return nil } func (x *DerivationExpression) GetDate() *Type_Date { - if x, ok := x.GetKind().(*DerivationExpression_Date); ok { - return x.Date + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Date); ok { + return x.Date + } } return nil } func (x *DerivationExpression) GetTime() *Type_Time { - if x, ok := x.GetKind().(*DerivationExpression_Time); ok { - return x.Time + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Time); ok { + return x.Time + } } return nil } func (x *DerivationExpression) GetIntervalYear() *Type_IntervalYear { - if x, ok := x.GetKind().(*DerivationExpression_IntervalYear); ok { - return x.IntervalYear + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IntervalYear); ok { + return x.IntervalYear + } } return nil } // Deprecated: Marked as deprecated in substrait/type_expressions.proto. func (x *DerivationExpression) GetTimestampTz() *Type_TimestampTZ { - if x, ok := x.GetKind().(*DerivationExpression_TimestampTz); ok { - return x.TimestampTz + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_TimestampTz); ok { + return x.TimestampTz + } } return nil } func (x *DerivationExpression) GetUuid() *Type_UUID { - if x, ok := x.GetKind().(*DerivationExpression_Uuid); ok { - return x.Uuid + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Uuid); ok { + return x.Uuid + } } return nil } func (x *DerivationExpression) GetIntervalDay() *DerivationExpression_ExpressionIntervalDay { - if x, ok := x.GetKind().(*DerivationExpression_IntervalDay); ok { - return x.IntervalDay + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IntervalDay); ok { + return x.IntervalDay + } } return nil } func (x *DerivationExpression) GetIntervalCompound() *DerivationExpression_ExpressionIntervalCompound { - if x, ok := x.GetKind().(*DerivationExpression_IntervalCompound); ok { - return x.IntervalCompound + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IntervalCompound); ok { + return x.IntervalCompound + } } return nil } func (x *DerivationExpression) GetFixedChar() *DerivationExpression_ExpressionFixedChar { - if x, ok := x.GetKind().(*DerivationExpression_FixedChar); ok { - return x.FixedChar + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_FixedChar); ok { + return x.FixedChar + } } return nil } func (x *DerivationExpression) GetVarchar() *DerivationExpression_ExpressionVarChar { - if x, ok := x.GetKind().(*DerivationExpression_Varchar); ok { - return x.Varchar + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Varchar); ok { + return x.Varchar + } } return nil } func (x *DerivationExpression) GetFixedBinary() *DerivationExpression_ExpressionFixedBinary { - if x, ok := x.GetKind().(*DerivationExpression_FixedBinary); ok { - return x.FixedBinary + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_FixedBinary); ok { + return x.FixedBinary + } } return nil } func (x *DerivationExpression) GetDecimal() *DerivationExpression_ExpressionDecimal { - if x, ok := x.GetKind().(*DerivationExpression_Decimal); ok { - return x.Decimal + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Decimal); ok { + return x.Decimal + } } return nil } func (x *DerivationExpression) GetPrecisionTimestamp() *DerivationExpression_ExpressionPrecisionTimestamp { - if x, ok := x.GetKind().(*DerivationExpression_PrecisionTimestamp); ok { - return x.PrecisionTimestamp + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_PrecisionTimestamp); ok { + return x.PrecisionTimestamp + } } return nil } func (x *DerivationExpression) GetPrecisionTimestampTz() *DerivationExpression_ExpressionPrecisionTimestampTZ { - if x, ok := x.GetKind().(*DerivationExpression_PrecisionTimestampTz); ok { - return x.PrecisionTimestampTz + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_PrecisionTimestampTz); ok { + return x.PrecisionTimestampTz + } } return nil } func (x *DerivationExpression) GetStruct() *DerivationExpression_ExpressionStruct { - if x, ok := x.GetKind().(*DerivationExpression_Struct); ok { - return x.Struct + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Struct); ok { + return x.Struct + } } return nil } func (x *DerivationExpression) GetList() *DerivationExpression_ExpressionList { - if x, ok := x.GetKind().(*DerivationExpression_List); ok { - return x.List + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_List); ok { + return x.List + } } return nil } func (x *DerivationExpression) GetMap() *DerivationExpression_ExpressionMap { - if x, ok := x.GetKind().(*DerivationExpression_Map); ok { - return x.Map + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_Map); ok { + return x.Map + } } return nil } func (x *DerivationExpression) GetUserDefined() *DerivationExpression_ExpressionUserDefined { - if x, ok := x.GetKind().(*DerivationExpression_UserDefined); ok { - return x.UserDefined + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_UserDefined); ok { + return x.UserDefined + } } return nil } // Deprecated: Marked as deprecated in substrait/type_expressions.proto. func (x *DerivationExpression) GetUserDefinedPointer() uint32 { - if x, ok := x.GetKind().(*DerivationExpression_UserDefinedPointer); ok { - return x.UserDefinedPointer + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_UserDefinedPointer); ok { + return x.UserDefinedPointer + } } return 0 } func (x *DerivationExpression) GetTypeParameterName() string { - if x, ok := x.GetKind().(*DerivationExpression_TypeParameterName); ok { - return x.TypeParameterName + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_TypeParameterName); ok { + return x.TypeParameterName + } } return "" } func (x *DerivationExpression) GetIntegerParameterName() string { - if x, ok := x.GetKind().(*DerivationExpression_IntegerParameterName); ok { - return x.IntegerParameterName + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IntegerParameterName); ok { + return x.IntegerParameterName + } } return "" } func (x *DerivationExpression) GetIntegerLiteral() int32 { - if x, ok := x.GetKind().(*DerivationExpression_IntegerLiteral); ok { - return x.IntegerLiteral + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IntegerLiteral); ok { + return x.IntegerLiteral + } } return 0 } func (x *DerivationExpression) GetUnaryOp() *DerivationExpression_UnaryOp { - if x, ok := x.GetKind().(*DerivationExpression_UnaryOp_); ok { - return x.UnaryOp + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_UnaryOp_); ok { + return x.UnaryOp + } } return nil } func (x *DerivationExpression) GetBinaryOp() *DerivationExpression_BinaryOp { - if x, ok := x.GetKind().(*DerivationExpression_BinaryOp_); ok { - return x.BinaryOp + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_BinaryOp_); ok { + return x.BinaryOp + } } return nil } func (x *DerivationExpression) GetIfElse() *DerivationExpression_IfElse { - if x, ok := x.GetKind().(*DerivationExpression_IfElse_); ok { - return x.IfElse + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_IfElse_); ok { + return x.IfElse + } } return nil } func (x *DerivationExpression) GetReturnProgram() *DerivationExpression_ReturnProgram { - if x, ok := x.GetKind().(*DerivationExpression_ReturnProgram_); ok { - return x.ReturnProgram + if x != nil { + if x, ok := x.Kind.(*DerivationExpression_ReturnProgram_); ok { + return x.ReturnProgram + } } return nil } @@ -703,13 +772,12 @@ func (*DerivationExpression_IfElse_) isDerivationExpression_Kind() {} func (*DerivationExpression_ReturnProgram_) isDerivationExpression_Kind() {} type DerivationExpression_ExpressionFixedChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionFixedChar) Reset() { @@ -764,13 +832,12 @@ func (x *DerivationExpression_ExpressionFixedChar) GetNullability() Type_Nullabi } type DerivationExpression_ExpressionVarChar struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionVarChar) Reset() { @@ -825,13 +892,12 @@ func (x *DerivationExpression_ExpressionVarChar) GetNullability() Type_Nullabili } type DerivationExpression_ExpressionFixedBinary struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Length *DerivationExpression `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionFixedBinary) Reset() { @@ -886,14 +952,13 @@ func (x *DerivationExpression_ExpressionFixedBinary) GetNullability() Type_Nulla } type DerivationExpression_ExpressionDecimal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Scale *DerivationExpression `protobuf:"bytes,1,opt,name=scale,proto3" json:"scale,omitempty"` - Precision *DerivationExpression `protobuf:"bytes,2,opt,name=precision,proto3" json:"precision,omitempty"` - VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Scale *DerivationExpression `protobuf:"bytes,1,opt,name=scale,proto3" json:"scale,omitempty"` + Precision *DerivationExpression `protobuf:"bytes,2,opt,name=precision,proto3" json:"precision,omitempty"` + VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionDecimal) Reset() { @@ -955,13 +1020,12 @@ func (x *DerivationExpression_ExpressionDecimal) GetNullability() Type_Nullabili } type DerivationExpression_ExpressionPrecisionTimestamp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionPrecisionTimestamp) Reset() { @@ -1016,13 +1080,12 @@ func (x *DerivationExpression_ExpressionPrecisionTimestamp) GetNullability() Typ } type DerivationExpression_ExpressionIntervalDay struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionIntervalDay) Reset() { @@ -1077,13 +1140,12 @@ func (x *DerivationExpression_ExpressionIntervalDay) GetNullability() Type_Nulla } type DerivationExpression_ExpressionIntervalCompound struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionIntervalCompound) Reset() { @@ -1138,13 +1200,12 @@ func (x *DerivationExpression_ExpressionIntervalCompound) GetNullability() Type_ } type DerivationExpression_ExpressionPrecisionTimestampTZ struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Precision *DerivationExpression `protobuf:"bytes,1,opt,name=precision,proto3" json:"precision,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionPrecisionTimestampTZ) Reset() { @@ -1199,13 +1260,12 @@ func (x *DerivationExpression_ExpressionPrecisionTimestampTZ) GetNullability() T } type DerivationExpression_ExpressionStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Types []*DerivationExpression `protobuf:"bytes,1,rep,name=types,proto3" json:"types,omitempty"` VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionStruct) Reset() { @@ -1260,12 +1320,11 @@ func (x *DerivationExpression_ExpressionStruct) GetNullability() Type_Nullabilit } type DerivationExpression_ExpressionNamedStruct struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Struct *DerivationExpression_ExpressionStruct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - Struct *DerivationExpression_ExpressionStruct `protobuf:"bytes,2,opt,name=struct,proto3" json:"struct,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionNamedStruct) Reset() { @@ -1313,13 +1372,12 @@ func (x *DerivationExpression_ExpressionNamedStruct) GetStruct() *DerivationExpr } type DerivationExpression_ExpressionList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type *DerivationExpression `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type *DerivationExpression `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionList) Reset() { @@ -1374,14 +1432,13 @@ func (x *DerivationExpression_ExpressionList) GetNullability() Type_Nullability } type DerivationExpression_ExpressionMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key *DerivationExpression `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *DerivationExpression `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Key *DerivationExpression `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *DerivationExpression `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + VariationPointer uint32 `protobuf:"varint,3,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,4,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionMap) Reset() { @@ -1443,13 +1500,12 @@ func (x *DerivationExpression_ExpressionMap) GetNullability() Type_Nullability { } type DerivationExpression_ExpressionUserDefined struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TypePointer uint32 `protobuf:"varint,1,opt,name=type_pointer,json=typePointer,proto3" json:"type_pointer,omitempty"` - VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` - Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TypePointer uint32 `protobuf:"varint,1,opt,name=type_pointer,json=typePointer,proto3" json:"type_pointer,omitempty"` + VariationPointer uint32 `protobuf:"varint,2,opt,name=variation_pointer,json=variationPointer,proto3" json:"variation_pointer,omitempty"` + Nullability Type_Nullability `protobuf:"varint,3,opt,name=nullability,proto3,enum=substrait.Type_Nullability" json:"nullability,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ExpressionUserDefined) Reset() { @@ -1504,13 +1560,12 @@ func (x *DerivationExpression_ExpressionUserDefined) GetNullability() Type_Nulla } type DerivationExpression_IfElse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + IfCondition *DerivationExpression `protobuf:"bytes,1,opt,name=if_condition,json=ifCondition,proto3" json:"if_condition,omitempty"` + IfReturn *DerivationExpression `protobuf:"bytes,2,opt,name=if_return,json=ifReturn,proto3" json:"if_return,omitempty"` + ElseReturn *DerivationExpression `protobuf:"bytes,3,opt,name=else_return,json=elseReturn,proto3" json:"else_return,omitempty"` unknownFields protoimpl.UnknownFields - - IfCondition *DerivationExpression `protobuf:"bytes,1,opt,name=if_condition,json=ifCondition,proto3" json:"if_condition,omitempty"` - IfReturn *DerivationExpression `protobuf:"bytes,2,opt,name=if_return,json=ifReturn,proto3" json:"if_return,omitempty"` - ElseReturn *DerivationExpression `protobuf:"bytes,3,opt,name=else_return,json=elseReturn,proto3" json:"else_return,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_IfElse) Reset() { @@ -1565,12 +1620,11 @@ func (x *DerivationExpression_IfElse) GetElseReturn() *DerivationExpression { } type DerivationExpression_UnaryOp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + OpType DerivationExpression_UnaryOp_UnaryOpType `protobuf:"varint,1,opt,name=op_type,json=opType,proto3,enum=substrait.DerivationExpression_UnaryOp_UnaryOpType" json:"op_type,omitempty"` + Arg *DerivationExpression `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` unknownFields protoimpl.UnknownFields - - OpType DerivationExpression_UnaryOp_UnaryOpType `protobuf:"varint,1,opt,name=op_type,json=opType,proto3,enum=substrait.DerivationExpression_UnaryOp_UnaryOpType" json:"op_type,omitempty"` - Arg *DerivationExpression `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_UnaryOp) Reset() { @@ -1618,13 +1672,12 @@ func (x *DerivationExpression_UnaryOp) GetArg() *DerivationExpression { } type DerivationExpression_BinaryOp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + OpType DerivationExpression_BinaryOp_BinaryOpType `protobuf:"varint,1,opt,name=op_type,json=opType,proto3,enum=substrait.DerivationExpression_BinaryOp_BinaryOpType" json:"op_type,omitempty"` + Arg1 *DerivationExpression `protobuf:"bytes,2,opt,name=arg1,proto3" json:"arg1,omitempty"` + Arg2 *DerivationExpression `protobuf:"bytes,3,opt,name=arg2,proto3" json:"arg2,omitempty"` unknownFields protoimpl.UnknownFields - - OpType DerivationExpression_BinaryOp_BinaryOpType `protobuf:"varint,1,opt,name=op_type,json=opType,proto3,enum=substrait.DerivationExpression_BinaryOp_BinaryOpType" json:"op_type,omitempty"` - Arg1 *DerivationExpression `protobuf:"bytes,2,opt,name=arg1,proto3" json:"arg1,omitempty"` - Arg2 *DerivationExpression `protobuf:"bytes,3,opt,name=arg2,proto3" json:"arg2,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_BinaryOp) Reset() { @@ -1679,12 +1732,11 @@ func (x *DerivationExpression_BinaryOp) GetArg2() *DerivationExpression { } type DerivationExpression_ReturnProgram struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Assignments []*DerivationExpression_ReturnProgram_Assignment `protobuf:"bytes,1,rep,name=assignments,proto3" json:"assignments,omitempty"` FinalExpression *DerivationExpression `protobuf:"bytes,2,opt,name=final_expression,json=finalExpression,proto3" json:"final_expression,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ReturnProgram) Reset() { @@ -1732,12 +1784,11 @@ func (x *DerivationExpression_ReturnProgram) GetFinalExpression() *DerivationExp } type DerivationExpression_ReturnProgram_Assignment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expression *DerivationExpression `protobuf:"bytes,2,opt,name=expression,proto3" json:"expression,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Expression *DerivationExpression `protobuf:"bytes,2,opt,name=expression,proto3" json:"expression,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DerivationExpression_ReturnProgram_Assignment) Reset() {