diff --git a/clientlib/src/main/proto/yelp/nrtsearch/luceneserver.proto b/clientlib/src/main/proto/yelp/nrtsearch/luceneserver.proto index 6a8700f6a..575d187c1 100644 --- a/clientlib/src/main/proto/yelp/nrtsearch/luceneserver.proto +++ b/clientlib/src/main/proto/yelp/nrtsearch/luceneserver.proto @@ -232,6 +232,14 @@ service LuceneServer { body: "*" }; } + + rpc deleteIndexBackup (DeleteIndexBackupRequest) returns (DeleteIndexBackupResponse) { + option (google.api.http) = { + post: "/v1/delete_index_backup" + body: "*" + }; + } + /* Gets the state of a started index, includes settings, live_settings, search schema, suggest schema */ rpc state (StateRequest) returns (StateResponse) { option (google.api.http) = { @@ -743,6 +751,17 @@ message BackupIndexResponse { string metadataVersionHash = 2; //version identifier for metadata on s3 } +message DeleteIndexBackupRequest { + string indexName = 1; //name of the index to backup + string serviceName = 2; // remote storage namespace qualifier for service + string resourceName = 3; //remote storage namespace qualifier for resource e.g. indexName + int32 nDays = 4; //backups older than nDays will be deleted from s3 +} + +message DeleteIndexBackupResponse { + repeated string deletedVersionHashes = 1; // version hashes of backups which were deleted +} + message IndicesRequest { } diff --git a/grpc-gateway/analysis.pb.go b/grpc-gateway/analysis.pb.go index 9e65d5bdf..fbd4f5a0a 100644 --- a/grpc-gateway/analysis.pb.go +++ b/grpc-gateway/analysis.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel +// protoc-gen-go v1.23.0 // protoc v3.11.4 // source: yelp/nrtsearch/analysis.proto diff --git a/grpc-gateway/luceneserver.pb.go b/grpc-gateway/luceneserver.pb.go index 0421caf19..6f87e7407 100644 --- a/grpc-gateway/luceneserver.pb.go +++ b/grpc-gateway/luceneserver.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel +// protoc-gen-go v1.23.0 // protoc v3.11.4 // source: yelp/nrtsearch/luceneserver.proto @@ -426,7 +426,7 @@ func (x ForceMergeResponse_Status) Number() protoreflect.EnumNumber { // Deprecated: Use ForceMergeResponse_Status.Descriptor instead. func (ForceMergeResponse_Status) EnumDescriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{76, 0} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{78, 0} } // Input to createIndex @@ -3853,6 +3853,124 @@ func (x *BackupIndexResponse) GetMetadataVersionHash() string { return "" } +type DeleteIndexBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexName string `protobuf:"bytes,1,opt,name=indexName,proto3" json:"indexName,omitempty"` //name of the index to backup + ServiceName string `protobuf:"bytes,2,opt,name=serviceName,proto3" json:"serviceName,omitempty"` // remote storage namespace qualifier for service + ResourceName string `protobuf:"bytes,3,opt,name=resourceName,proto3" json:"resourceName,omitempty"` //remote storage namespace qualifier for resource e.g. indexName + NDays int32 `protobuf:"varint,4,opt,name=nDays,proto3" json:"nDays,omitempty"` //backups older than nDays will be deleted from s3 +} + +func (x *DeleteIndexBackupRequest) Reset() { + *x = DeleteIndexBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteIndexBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteIndexBackupRequest) ProtoMessage() {} + +func (x *DeleteIndexBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteIndexBackupRequest.ProtoReflect.Descriptor instead. +func (*DeleteIndexBackupRequest) Descriptor() ([]byte, []int) { + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{49} +} + +func (x *DeleteIndexBackupRequest) GetIndexName() string { + if x != nil { + return x.IndexName + } + return "" +} + +func (x *DeleteIndexBackupRequest) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *DeleteIndexBackupRequest) GetResourceName() string { + if x != nil { + return x.ResourceName + } + return "" +} + +func (x *DeleteIndexBackupRequest) GetNDays() int32 { + if x != nil { + return x.NDays + } + return 0 +} + +type DeleteIndexBackupResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeletedVersionHashes []string `protobuf:"bytes,1,rep,name=deletedVersionHashes,proto3" json:"deletedVersionHashes,omitempty"` // version hashes of backups which were deleted +} + +func (x *DeleteIndexBackupResponse) Reset() { + *x = DeleteIndexBackupResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteIndexBackupResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteIndexBackupResponse) ProtoMessage() {} + +func (x *DeleteIndexBackupResponse) ProtoReflect() protoreflect.Message { + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteIndexBackupResponse.ProtoReflect.Descriptor instead. +func (*DeleteIndexBackupResponse) Descriptor() ([]byte, []int) { + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{50} +} + +func (x *DeleteIndexBackupResponse) GetDeletedVersionHashes() []string { + if x != nil { + return x.DeletedVersionHashes + } + return nil +} + type IndicesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3862,7 +3980,7 @@ type IndicesRequest struct { func (x *IndicesRequest) Reset() { *x = IndicesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[49] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +3993,7 @@ func (x *IndicesRequest) String() string { func (*IndicesRequest) ProtoMessage() {} func (x *IndicesRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[49] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +4006,7 @@ func (x *IndicesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IndicesRequest.ProtoReflect.Descriptor instead. func (*IndicesRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{49} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{51} } type IndicesResponse struct { @@ -3902,7 +4020,7 @@ type IndicesResponse struct { func (x *IndicesResponse) Reset() { *x = IndicesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[50] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3915,7 +4033,7 @@ func (x *IndicesResponse) String() string { func (*IndicesResponse) ProtoMessage() {} func (x *IndicesResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[50] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3928,7 +4046,7 @@ func (x *IndicesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IndicesResponse.ProtoReflect.Descriptor instead. func (*IndicesResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{50} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{52} } func (x *IndicesResponse) GetIndicesResponse() []*IndexStatsResponse { @@ -3950,7 +4068,7 @@ type IndexStatsResponse struct { func (x *IndexStatsResponse) Reset() { *x = IndexStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[51] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3963,7 +4081,7 @@ func (x *IndexStatsResponse) String() string { func (*IndexStatsResponse) ProtoMessage() {} func (x *IndexStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[51] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3976,7 +4094,7 @@ func (x *IndexStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexStatsResponse.ProtoReflect.Descriptor instead. func (*IndexStatsResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{51} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{53} } func (x *IndexStatsResponse) GetIndexName() string { @@ -4005,7 +4123,7 @@ type RestoreIndex struct { func (x *RestoreIndex) Reset() { *x = RestoreIndex{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[52] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4018,7 +4136,7 @@ func (x *RestoreIndex) String() string { func (*RestoreIndex) ProtoMessage() {} func (x *RestoreIndex) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[52] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4031,7 +4149,7 @@ func (x *RestoreIndex) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreIndex.ProtoReflect.Descriptor instead. func (*RestoreIndex) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{52} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{54} } func (x *RestoreIndex) GetServiceName() string { @@ -4059,7 +4177,7 @@ type StateRequest struct { func (x *StateRequest) Reset() { *x = StateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[53] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4072,7 +4190,7 @@ func (x *StateRequest) String() string { func (*StateRequest) ProtoMessage() {} func (x *StateRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[53] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4085,7 +4203,7 @@ func (x *StateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StateRequest.ProtoReflect.Descriptor instead. func (*StateRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{53} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{55} } func (x *StateRequest) GetIndexName() string { @@ -4106,7 +4224,7 @@ type StateResponse struct { func (x *StateResponse) Reset() { *x = StateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[54] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4119,7 +4237,7 @@ func (x *StateResponse) String() string { func (*StateResponse) ProtoMessage() {} func (x *StateResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[54] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4132,7 +4250,7 @@ func (x *StateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StateResponse.ProtoReflect.Descriptor instead. func (*StateResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{54} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{56} } func (x *StateResponse) GetResponse() string { @@ -4157,7 +4275,7 @@ type AddReplicaRequest struct { func (x *AddReplicaRequest) Reset() { *x = AddReplicaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[55] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4170,7 +4288,7 @@ func (x *AddReplicaRequest) String() string { func (*AddReplicaRequest) ProtoMessage() {} func (x *AddReplicaRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[55] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4183,7 +4301,7 @@ func (x *AddReplicaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddReplicaRequest.ProtoReflect.Descriptor instead. func (*AddReplicaRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{55} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{57} } func (x *AddReplicaRequest) GetMagicNumber() int32 { @@ -4232,7 +4350,7 @@ type AddReplicaResponse struct { func (x *AddReplicaResponse) Reset() { *x = AddReplicaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[56] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4245,7 +4363,7 @@ func (x *AddReplicaResponse) String() string { func (*AddReplicaResponse) ProtoMessage() {} func (x *AddReplicaResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[56] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4258,7 +4376,7 @@ func (x *AddReplicaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddReplicaResponse.ProtoReflect.Descriptor instead. func (*AddReplicaResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{56} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{58} } func (x *AddReplicaResponse) GetOk() string { @@ -4287,7 +4405,7 @@ type CopyState struct { func (x *CopyState) Reset() { *x = CopyState{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[57] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4300,7 +4418,7 @@ func (x *CopyState) String() string { func (*CopyState) ProtoMessage() {} func (x *CopyState) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[57] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4313,7 +4431,7 @@ func (x *CopyState) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyState.ProtoReflect.Descriptor instead. func (*CopyState) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{57} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{59} } func (x *CopyState) GetInfoBytesLength() int32 { @@ -4384,7 +4502,7 @@ type FilesMetadata struct { func (x *FilesMetadata) Reset() { *x = FilesMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[58] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4397,7 +4515,7 @@ func (x *FilesMetadata) String() string { func (*FilesMetadata) ProtoMessage() {} func (x *FilesMetadata) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[58] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4410,7 +4528,7 @@ func (x *FilesMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use FilesMetadata.ProtoReflect.Descriptor instead. func (*FilesMetadata) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{58} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{60} } func (x *FilesMetadata) GetNumFiles() int32 { @@ -4444,7 +4562,7 @@ type FileMetadata struct { func (x *FileMetadata) Reset() { *x = FileMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[59] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4457,7 +4575,7 @@ func (x *FileMetadata) String() string { func (*FileMetadata) ProtoMessage() {} func (x *FileMetadata) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[59] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4470,7 +4588,7 @@ func (x *FileMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use FileMetadata.ProtoReflect.Descriptor instead. func (*FileMetadata) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{59} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{61} } func (x *FileMetadata) GetFileName() string { @@ -4537,7 +4655,7 @@ type CopyFiles struct { func (x *CopyFiles) Reset() { *x = CopyFiles{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[60] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4550,7 +4668,7 @@ func (x *CopyFiles) String() string { func (*CopyFiles) ProtoMessage() {} func (x *CopyFiles) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[60] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4563,7 +4681,7 @@ func (x *CopyFiles) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyFiles.ProtoReflect.Descriptor instead. func (*CopyFiles) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{60} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{62} } func (x *CopyFiles) GetMagicNumber() int32 { @@ -4608,7 +4726,7 @@ type CopyStateRequest struct { func (x *CopyStateRequest) Reset() { *x = CopyStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[61] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4621,7 +4739,7 @@ func (x *CopyStateRequest) String() string { func (*CopyStateRequest) ProtoMessage() {} func (x *CopyStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[61] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4634,7 +4752,7 @@ func (x *CopyStateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyStateRequest.ProtoReflect.Descriptor instead. func (*CopyStateRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{61} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{63} } func (x *CopyStateRequest) GetMagicNumber() int32 { @@ -4672,7 +4790,7 @@ type FilesInfo struct { func (x *FilesInfo) Reset() { *x = FilesInfo{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[62] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4685,7 +4803,7 @@ func (x *FilesInfo) String() string { func (*FilesInfo) ProtoMessage() {} func (x *FilesInfo) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[62] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4698,7 +4816,7 @@ func (x *FilesInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FilesInfo.ProtoReflect.Descriptor instead. func (*FilesInfo) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{62} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{64} } func (x *FilesInfo) GetMagicNumber() int32 { @@ -4742,7 +4860,7 @@ type FileInfo struct { func (x *FileInfo) Reset() { *x = FileInfo{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[63] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4755,7 +4873,7 @@ func (x *FileInfo) String() string { func (*FileInfo) ProtoMessage() {} func (x *FileInfo) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[63] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4768,7 +4886,7 @@ func (x *FileInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FileInfo.ProtoReflect.Descriptor instead. func (*FileInfo) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{63} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{65} } func (x *FileInfo) GetFileName() string { @@ -4803,7 +4921,7 @@ type RawFileChunk struct { func (x *RawFileChunk) Reset() { *x = RawFileChunk{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[64] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4816,7 +4934,7 @@ func (x *RawFileChunk) String() string { func (*RawFileChunk) ProtoMessage() {} func (x *RawFileChunk) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[64] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4829,7 +4947,7 @@ func (x *RawFileChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use RawFileChunk.ProtoReflect.Descriptor instead. func (*RawFileChunk) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{64} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{66} } func (x *RawFileChunk) GetContent() []byte { @@ -4850,7 +4968,7 @@ type HealthCheckRequest struct { func (x *HealthCheckRequest) Reset() { *x = HealthCheckRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[65] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4863,7 +4981,7 @@ func (x *HealthCheckRequest) String() string { func (*HealthCheckRequest) ProtoMessage() {} func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[65] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4876,7 +4994,7 @@ func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead. func (*HealthCheckRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{65} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{67} } func (x *HealthCheckRequest) GetCheck() bool { @@ -4897,7 +5015,7 @@ type HealthCheckResponse struct { func (x *HealthCheckResponse) Reset() { *x = HealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[66] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4910,7 +5028,7 @@ func (x *HealthCheckResponse) String() string { func (*HealthCheckResponse) ProtoMessage() {} func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[66] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,7 +5041,7 @@ func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead. func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{66} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{68} } func (x *HealthCheckResponse) GetHealth() TransferStatusCode { @@ -4945,7 +5063,7 @@ type TransferStatus struct { func (x *TransferStatus) Reset() { *x = TransferStatus{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[67] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4958,7 +5076,7 @@ func (x *TransferStatus) String() string { func (*TransferStatus) ProtoMessage() {} func (x *TransferStatus) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[67] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4971,7 +5089,7 @@ func (x *TransferStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use TransferStatus.ProtoReflect.Descriptor instead. func (*TransferStatus) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{67} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{69} } func (x *TransferStatus) GetMessage() string { @@ -5002,7 +5120,7 @@ type NewNRTPoint struct { func (x *NewNRTPoint) Reset() { *x = NewNRTPoint{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[68] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5015,7 +5133,7 @@ func (x *NewNRTPoint) String() string { func (*NewNRTPoint) ProtoMessage() {} func (x *NewNRTPoint) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[68] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5028,7 +5146,7 @@ func (x *NewNRTPoint) ProtoReflect() protoreflect.Message { // Deprecated: Use NewNRTPoint.ProtoReflect.Descriptor instead. func (*NewNRTPoint) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{68} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{70} } func (x *NewNRTPoint) GetMagicNumber() int32 { @@ -5071,7 +5189,7 @@ type IndexName struct { func (x *IndexName) Reset() { *x = IndexName{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[69] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5084,7 +5202,7 @@ func (x *IndexName) String() string { func (*IndexName) ProtoMessage() {} func (x *IndexName) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[69] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5097,7 +5215,7 @@ func (x *IndexName) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexName.ProtoReflect.Descriptor instead. func (*IndexName) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{69} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{71} } func (x *IndexName) GetMagicNumber() int32 { @@ -5126,7 +5244,7 @@ type SearcherVersion struct { func (x *SearcherVersion) Reset() { *x = SearcherVersion{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[70] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5139,7 +5257,7 @@ func (x *SearcherVersion) String() string { func (*SearcherVersion) ProtoMessage() {} func (x *SearcherVersion) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[70] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5152,7 +5270,7 @@ func (x *SearcherVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use SearcherVersion.ProtoReflect.Descriptor instead. func (*SearcherVersion) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{70} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{72} } func (x *SearcherVersion) GetVersion() int64 { @@ -5180,7 +5298,7 @@ type GetNodesRequest struct { func (x *GetNodesRequest) Reset() { *x = GetNodesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[71] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5193,7 +5311,7 @@ func (x *GetNodesRequest) String() string { func (*GetNodesRequest) ProtoMessage() {} func (x *GetNodesRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[71] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5206,7 +5324,7 @@ func (x *GetNodesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNodesRequest.ProtoReflect.Descriptor instead. func (*GetNodesRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{71} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{73} } func (x *GetNodesRequest) GetIndexName() string { @@ -5227,7 +5345,7 @@ type GetNodesResponse struct { func (x *GetNodesResponse) Reset() { *x = GetNodesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[72] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5240,7 +5358,7 @@ func (x *GetNodesResponse) String() string { func (*GetNodesResponse) ProtoMessage() {} func (x *GetNodesResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[72] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5253,7 +5371,7 @@ func (x *GetNodesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNodesResponse.ProtoReflect.Descriptor instead. func (*GetNodesResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{72} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{74} } func (x *GetNodesResponse) GetNodes() []*NodeInfo { @@ -5275,7 +5393,7 @@ type NodeInfo struct { func (x *NodeInfo) Reset() { *x = NodeInfo{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[73] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5288,7 +5406,7 @@ func (x *NodeInfo) String() string { func (*NodeInfo) ProtoMessage() {} func (x *NodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[73] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5301,7 +5419,7 @@ func (x *NodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead. func (*NodeInfo) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{73} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{75} } func (x *NodeInfo) GetHostname() string { @@ -5330,7 +5448,7 @@ type DeleteByQueryRequest struct { func (x *DeleteByQueryRequest) Reset() { *x = DeleteByQueryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[74] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5343,7 +5461,7 @@ func (x *DeleteByQueryRequest) String() string { func (*DeleteByQueryRequest) ProtoMessage() {} func (x *DeleteByQueryRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[74] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5356,7 +5474,7 @@ func (x *DeleteByQueryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteByQueryRequest.ProtoReflect.Descriptor instead. func (*DeleteByQueryRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{74} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{76} } func (x *DeleteByQueryRequest) GetIndexName() string { @@ -5386,7 +5504,7 @@ type ForceMergeRequest struct { func (x *ForceMergeRequest) Reset() { *x = ForceMergeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[75] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5399,7 +5517,7 @@ func (x *ForceMergeRequest) String() string { func (*ForceMergeRequest) ProtoMessage() {} func (x *ForceMergeRequest) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[75] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5412,7 +5530,7 @@ func (x *ForceMergeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ForceMergeRequest.ProtoReflect.Descriptor instead. func (*ForceMergeRequest) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{75} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{77} } func (x *ForceMergeRequest) GetIndexName() string { @@ -5447,7 +5565,7 @@ type ForceMergeResponse struct { func (x *ForceMergeResponse) Reset() { *x = ForceMergeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[76] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5460,7 +5578,7 @@ func (x *ForceMergeResponse) String() string { func (*ForceMergeResponse) ProtoMessage() {} func (x *ForceMergeResponse) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[76] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5473,7 +5591,7 @@ func (x *ForceMergeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ForceMergeResponse.ProtoReflect.Descriptor instead. func (*ForceMergeResponse) Descriptor() ([]byte, []int) { - return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{76} + return file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP(), []int{78} } func (x *ForceMergeResponse) GetStatus() ForceMergeResponse_Status { @@ -5497,7 +5615,7 @@ type AddDocumentRequest_MultiValuedField struct { func (x *AddDocumentRequest_MultiValuedField) Reset() { *x = AddDocumentRequest_MultiValuedField{} if protoimpl.UnsafeEnabled { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[77] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5510,7 +5628,7 @@ func (x *AddDocumentRequest_MultiValuedField) String() string { func (*AddDocumentRequest_MultiValuedField) ProtoMessage() {} func (x *AddDocumentRequest_MultiValuedField) ProtoReflect() protoreflect.Message { - mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[77] + mi := &file_yelp_nrtsearch_luceneserver_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6041,472 +6159,496 @@ var file_yelp_nrtsearch_luceneserver_proto_rawDesc = []byte{ 0x12, 0x30, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x61, - 0x73, 0x68, 0x22, 0x10, 0x0a, 0x0e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x0f, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x12, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x0c, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x2c, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2b, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x11, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x68, 0x22, 0x94, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x6e, 0x44, 0x61, 0x79, 0x73, 0x22, 0x4f, 0x0a, 0x19, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x49, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5d, 0x0a, 0x0f, + 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4a, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x69, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x12, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x41, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x54, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, + 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x24, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0xce, 0x02, + 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x69, + 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x67, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x41, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x13, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x22, 0x6b, + 0x0a, 0x0d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x66, + 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x66, + 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0, 0x01, 0x0a, 0x0c, + 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0xae, + 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0d, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x70, 0x0a, 0x10, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, + 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x12, 0x32, 0x0a, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x5e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x70, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x70, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x28, 0x0a, 0x0c, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x2a, 0x0a, 0x12, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x4f, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, + 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, + 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x60, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x4e, + 0x65, 0x77, 0x4e, 0x52, 0x54, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, + 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, - 0x24, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0xce, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x69, 0x6e, - 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1c, 0x0a, - 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x67, - 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x65, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x64, 0x69, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x22, 0x2f, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x40, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, + 0x73, 0x22, 0x3a, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, + 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x5f, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x71, + 0x0a, 0x11, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x4e, 0x75, + 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x57, + 0x61, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x6f, 0x57, 0x61, 0x69, + 0x74, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3e, 0x0a, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x4d, 0x45, 0x52, + 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x15, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x5f, 0x53, 0x55, + 0x42, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x01, 0x2a, 0xa2, 0x01, 0x0a, 0x09, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, + 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x4e, 0x47, + 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, + 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x41, 0x54, 0x5f, 0x4c, 0x4f, 0x4e, 0x10, 0x07, 0x12, + 0x0d, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x08, 0x12, 0x0b, + 0x0a, 0x07, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x0c, 0x0a, 0x08, 0x49, + 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, + 0x54, 0x4f, 0x4d, 0x10, 0x0b, 0x12, 0x07, 0x0a, 0x03, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x2a, 0x64, + 0x0a, 0x0c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, + 0x0a, 0x14, 0x44, 0x4f, 0x43, 0x53, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x53, 0x5f, 0x50, 0x4f, 0x53, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x43, 0x53, + 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x43, 0x53, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x53, + 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4f, 0x43, 0x53, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x53, + 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x53, 0x10, 0x03, 0x2a, 0x84, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x56, + 0x45, 0x43, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x52, 0x4d, + 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x45, 0x52, 0x4d, 0x53, 0x5f, 0x50, 0x4f, 0x53, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x45, 0x52, 0x4d, + 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x53, + 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x45, 0x52, 0x4d, 0x53, 0x5f, 0x50, + 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x53, + 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, 0x53, 0x10, 0x04, 0x2a, 0x61, 0x0a, 0x09, 0x46, + 0x61, 0x63, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x46, + 0x41, 0x43, 0x45, 0x54, 0x53, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x4c, 0x41, 0x54, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x02, + 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x44, 0x4f, 0x43, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x10, 0x04, 0x2a, 0x30, + 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, + 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, + 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, + 0x2a, 0x44, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x6f, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x6e, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x32, 0xbf, 0x19, 0x0a, 0x0c, 0x4c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x6f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x76, + 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, + 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, + 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x47, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x22, 0x6b, 0x0a, 0x0d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, - 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xd0, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6c, - 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x22, - 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x6f, - 0x6f, 0x74, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x16, - 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, - 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0xae, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x70, 0x79, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, - 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x47, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a, 0x10, 0x43, 0x6f, 0x70, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, - 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, - 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x09, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, - 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5e, 0x0a, 0x08, 0x46, 0x69, 0x6c, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x66, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x28, 0x0a, 0x0c, 0x52, 0x61, 0x77, - 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x22, 0x2a, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, - 0x4f, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x22, 0x60, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x77, 0x4e, 0x52, 0x54, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, - 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x09, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x67, - 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x6d, 0x61, 0x67, 0x69, 0x63, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x64, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x64, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x22, 0x2f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x6e, - 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x08, 0x4e, 0x6f, 0x64, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0x5f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x71, 0x0a, 0x11, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, - 0x65, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x78, - 0x4e, 0x75, 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x57, 0x61, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x64, 0x6f, 0x57, 0x61, 0x69, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x46, 0x6f, - 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x3e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x46, - 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, - 0x45, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, - 0x4d, 0x45, 0x52, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, - 0x01, 0x2a, 0xa2, 0x01, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x08, 0x0a, 0x04, 0x41, 0x54, 0x4f, 0x4d, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, - 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x02, - 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, - 0x54, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, - 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x41, - 0x54, 0x5f, 0x4c, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x45, 0x5f, - 0x54, 0x49, 0x4d, 0x45, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, - 0x4c, 0x10, 0x09, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, - 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x0b, 0x12, 0x07, 0x0a, - 0x03, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x2a, 0x64, 0x0a, 0x0c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x4f, 0x43, 0x53, 0x5f, 0x46, - 0x52, 0x45, 0x51, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x43, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, - 0x43, 0x53, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x53, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4f, - 0x43, 0x53, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x53, 0x10, 0x03, 0x2a, 0x84, 0x01, 0x0a, - 0x0b, 0x54, 0x65, 0x72, 0x6d, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x0e, - 0x4e, 0x4f, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x56, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x53, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x52, 0x4d, 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x45, 0x52, 0x4d, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x02, - 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x45, 0x52, 0x4d, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x24, 0x0a, - 0x20, 0x54, 0x45, 0x52, 0x4d, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, - 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x53, 0x5f, 0x50, 0x41, 0x59, 0x4c, 0x4f, 0x41, 0x44, - 0x53, 0x10, 0x04, 0x2a, 0x61, 0x0a, 0x09, 0x46, 0x61, 0x63, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x54, 0x53, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x46, 0x4c, 0x41, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x49, 0x45, - 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x55, 0x4d, 0x45, - 0x52, 0x49, 0x43, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x53, - 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x4f, 0x43, 0x5f, 0x56, 0x41, - 0x4c, 0x55, 0x45, 0x53, 0x10, 0x04, 0x2a, 0x30, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, - 0x0a, 0x0a, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x02, 0x2a, 0x44, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, - 0x6f, 0x6e, 0x65, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x6e, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x32, 0xb4, - 0x18, 0x0a, 0x0c, 0x4c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x6f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, - 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, - 0x12, 0x73, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x4c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, - 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, + 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6b, + 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, - 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6b, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x66, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, - 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6b, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, - 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x70, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x61, 0x64, 0x64, - 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, - 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, 0x64, 0x5f, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x12, 0x5e, - 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, - 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, - 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x5a, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x27, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, - 0x01, 0x2a, 0x5a, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x5a, 0x0a, 0x06, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, + 0x6b, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x09, + 0x73, 0x74, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, + 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, - 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, - 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x22, - 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, - 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x62, 0x79, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x79, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, - 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, - 0x12, 0x6f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, - 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, - 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, - 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x77, 0x0a, 0x0d, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, - 0x67, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x3a, 0x01, 0x2a, 0x12, - 0x75, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, - 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7b, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x0f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6c, - 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x16, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x47, 0x65, 0x6e, 0x12, - 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x47, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, 0x64, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x12, 0x5e, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x12, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x5a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x12, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x3a, + 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x09, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x5a, 0x17, 0x12, 0x15, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, + 0x6d, 0x65, 0x7d, 0x12, 0x5a, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, + 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, + 0x64, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, + 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x79, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x62, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x79, 0x0a, + 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, + 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x77, + 0x0a, 0x0d, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, + 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7b, + 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x12, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x0f, 0x72, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x24, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, + 0x16, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x47, 0x65, 0x6e, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x47, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x67, 0x65, 0x6e, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x47, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x47, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, + 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x67, 0x65, 0x6e, + 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x6f, 0x0a, 0x0b, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x88, 0x01, + 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x27, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, + 0x5a, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x61, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, - 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, - 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x5a, 0x17, 0x12, - 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x61, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, 0x6f, - 0x64, 0x79, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5b, 0x0a, 0x07, 0x69, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x72, - 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xd1, 0x05, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x61, - 0x64, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1f, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x76, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0b, 0x73, - 0x65, 0x6e, 0x64, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x2e, 0x6c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, - 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x28, 0x01, 0x12, 0x45, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x76, - 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x1a, - 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x46, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x17, 0x2e, 0x6c, - 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x70, 0x79, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x4e, 0x52, - 0x54, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4e, 0x65, 0x77, 0x4e, 0x52, 0x54, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x00, 0x12, 0x49, 0x0a, 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4e, 0x52, 0x54, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, - 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x19, - 0x67, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, - 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, - 0x6d, 0x65, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3b, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, - 0x2e, 0x79, 0x65, 0x6c, 0x70, 0x2e, 0x6e, 0x72, 0x74, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x42, 0x11, 0x4c, 0x75, 0x63, - 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0xa2, 0x02, 0x03, 0x48, 0x4c, 0x57, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, + 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x50, 0x0a, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, + 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5b, + 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x0a, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4d, + 0x65, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, + 0x6d, 0x65, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xd1, 0x05, 0x0a, 0x11, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x52, + 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x1f, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x76, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x4b, + 0x0a, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x2e, + 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x28, 0x01, 0x12, 0x45, 0x0a, 0x0b, 0x72, + 0x65, 0x63, 0x76, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x1a, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x63, 0x6f, 0x70, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, + 0x6f, 0x70, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x30, 0x01, 0x12, 0x48, 0x0a, 0x0b, 0x6e, 0x65, + 0x77, 0x4e, 0x52, 0x54, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x65, + 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4e, 0x65, 0x77, 0x4e, 0x52, 0x54, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4e, 0x52, 0x54, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x17, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, + 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, + 0x55, 0x0a, 0x19, 0x67, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x2e, 0x6c, + 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x2e, 0x6c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x11, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x6c, 0x75, + 0x63, 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6c, 0x75, 0x63, + 0x65, 0x6e, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3b, 0x0a, 0x1e, + 0x63, 0x6f, 0x6d, 0x2e, 0x79, 0x65, 0x6c, 0x70, 0x2e, 0x6e, 0x72, 0x74, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x42, 0x11, + 0x4c, 0x75, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0xa2, 0x02, 0x03, 0x48, 0x4c, 0x57, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -6522,7 +6664,7 @@ func file_yelp_nrtsearch_luceneserver_proto_rawDescGZIP() []byte { } var file_yelp_nrtsearch_luceneserver_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_yelp_nrtsearch_luceneserver_proto_msgTypes = make([]protoimpl.MessageInfo, 79) +var file_yelp_nrtsearch_luceneserver_proto_msgTypes = make([]protoimpl.MessageInfo, 81) var file_yelp_nrtsearch_luceneserver_proto_goTypes = []interface{}{ (FieldType)(0), // 0: luceneserver.FieldType (IndexOptions)(0), // 1: luceneserver.IndexOptions @@ -6580,62 +6722,64 @@ var file_yelp_nrtsearch_luceneserver_proto_goTypes = []interface{}{ (*GetAllSnapshotGenResponse)(nil), // 53: luceneserver.GetAllSnapshotGenResponse (*BackupIndexRequest)(nil), // 54: luceneserver.BackupIndexRequest (*BackupIndexResponse)(nil), // 55: luceneserver.BackupIndexResponse - (*IndicesRequest)(nil), // 56: luceneserver.IndicesRequest - (*IndicesResponse)(nil), // 57: luceneserver.IndicesResponse - (*IndexStatsResponse)(nil), // 58: luceneserver.IndexStatsResponse - (*RestoreIndex)(nil), // 59: luceneserver.RestoreIndex - (*StateRequest)(nil), // 60: luceneserver.StateRequest - (*StateResponse)(nil), // 61: luceneserver.StateResponse - (*AddReplicaRequest)(nil), // 62: luceneserver.AddReplicaRequest - (*AddReplicaResponse)(nil), // 63: luceneserver.AddReplicaResponse - (*CopyState)(nil), // 64: luceneserver.CopyState - (*FilesMetadata)(nil), // 65: luceneserver.FilesMetadata - (*FileMetadata)(nil), // 66: luceneserver.FileMetadata - (*CopyFiles)(nil), // 67: luceneserver.CopyFiles - (*CopyStateRequest)(nil), // 68: luceneserver.CopyStateRequest - (*FilesInfo)(nil), // 69: luceneserver.FilesInfo - (*FileInfo)(nil), // 70: luceneserver.FileInfo - (*RawFileChunk)(nil), // 71: luceneserver.RawFileChunk - (*HealthCheckRequest)(nil), // 72: luceneserver.HealthCheckRequest - (*HealthCheckResponse)(nil), // 73: luceneserver.HealthCheckResponse - (*TransferStatus)(nil), // 74: luceneserver.TransferStatus - (*NewNRTPoint)(nil), // 75: luceneserver.NewNRTPoint - (*IndexName)(nil), // 76: luceneserver.IndexName - (*SearcherVersion)(nil), // 77: luceneserver.SearcherVersion - (*GetNodesRequest)(nil), // 78: luceneserver.GetNodesRequest - (*GetNodesResponse)(nil), // 79: luceneserver.GetNodesResponse - (*NodeInfo)(nil), // 80: luceneserver.NodeInfo - (*DeleteByQueryRequest)(nil), // 81: luceneserver.DeleteByQueryRequest - (*ForceMergeRequest)(nil), // 82: luceneserver.ForceMergeRequest - (*ForceMergeResponse)(nil), // 83: luceneserver.ForceMergeResponse - (*AddDocumentRequest_MultiValuedField)(nil), // 84: luceneserver.AddDocumentRequest.MultiValuedField - nil, // 85: luceneserver.AddDocumentRequest.FieldsEntry - (*Script)(nil), // 86: luceneserver.Script - (*Analyzer)(nil), // 87: luceneserver.Analyzer - (*_struct.Struct)(nil), // 88: google.protobuf.Struct - (*SortFields)(nil), // 89: luceneserver.SortFields - (*Query)(nil), // 90: luceneserver.Query - (*SearchRequest)(nil), // 91: luceneserver.SearchRequest - (*empty.Empty)(nil), // 92: google.protobuf.Empty - (*SearchResponse)(nil), // 93: luceneserver.SearchResponse - (*httpbody.HttpBody)(nil), // 94: google.api.HttpBody + (*DeleteIndexBackupRequest)(nil), // 56: luceneserver.DeleteIndexBackupRequest + (*DeleteIndexBackupResponse)(nil), // 57: luceneserver.DeleteIndexBackupResponse + (*IndicesRequest)(nil), // 58: luceneserver.IndicesRequest + (*IndicesResponse)(nil), // 59: luceneserver.IndicesResponse + (*IndexStatsResponse)(nil), // 60: luceneserver.IndexStatsResponse + (*RestoreIndex)(nil), // 61: luceneserver.RestoreIndex + (*StateRequest)(nil), // 62: luceneserver.StateRequest + (*StateResponse)(nil), // 63: luceneserver.StateResponse + (*AddReplicaRequest)(nil), // 64: luceneserver.AddReplicaRequest + (*AddReplicaResponse)(nil), // 65: luceneserver.AddReplicaResponse + (*CopyState)(nil), // 66: luceneserver.CopyState + (*FilesMetadata)(nil), // 67: luceneserver.FilesMetadata + (*FileMetadata)(nil), // 68: luceneserver.FileMetadata + (*CopyFiles)(nil), // 69: luceneserver.CopyFiles + (*CopyStateRequest)(nil), // 70: luceneserver.CopyStateRequest + (*FilesInfo)(nil), // 71: luceneserver.FilesInfo + (*FileInfo)(nil), // 72: luceneserver.FileInfo + (*RawFileChunk)(nil), // 73: luceneserver.RawFileChunk + (*HealthCheckRequest)(nil), // 74: luceneserver.HealthCheckRequest + (*HealthCheckResponse)(nil), // 75: luceneserver.HealthCheckResponse + (*TransferStatus)(nil), // 76: luceneserver.TransferStatus + (*NewNRTPoint)(nil), // 77: luceneserver.NewNRTPoint + (*IndexName)(nil), // 78: luceneserver.IndexName + (*SearcherVersion)(nil), // 79: luceneserver.SearcherVersion + (*GetNodesRequest)(nil), // 80: luceneserver.GetNodesRequest + (*GetNodesResponse)(nil), // 81: luceneserver.GetNodesResponse + (*NodeInfo)(nil), // 82: luceneserver.NodeInfo + (*DeleteByQueryRequest)(nil), // 83: luceneserver.DeleteByQueryRequest + (*ForceMergeRequest)(nil), // 84: luceneserver.ForceMergeRequest + (*ForceMergeResponse)(nil), // 85: luceneserver.ForceMergeResponse + (*AddDocumentRequest_MultiValuedField)(nil), // 86: luceneserver.AddDocumentRequest.MultiValuedField + nil, // 87: luceneserver.AddDocumentRequest.FieldsEntry + (*Script)(nil), // 88: luceneserver.Script + (*Analyzer)(nil), // 89: luceneserver.Analyzer + (*_struct.Struct)(nil), // 90: google.protobuf.Struct + (*SortFields)(nil), // 91: luceneserver.SortFields + (*Query)(nil), // 92: luceneserver.Query + (*SearchRequest)(nil), // 93: luceneserver.SearchRequest + (*empty.Empty)(nil), // 94: google.protobuf.Empty + (*SearchResponse)(nil), // 95: luceneserver.SearchResponse + (*httpbody.HttpBody)(nil), // 96: google.api.HttpBody } var file_yelp_nrtsearch_luceneserver_proto_depIdxs = []int32{ 0, // 0: luceneserver.Field.type:type_name -> luceneserver.FieldType 1, // 1: luceneserver.Field.indexOptions:type_name -> luceneserver.IndexOptions - 86, // 2: luceneserver.Field.script:type_name -> luceneserver.Script - 87, // 3: luceneserver.Field.analyzer:type_name -> luceneserver.Analyzer - 87, // 4: luceneserver.Field.indexAnalyzer:type_name -> luceneserver.Analyzer - 87, // 5: luceneserver.Field.searchAnalyzer:type_name -> luceneserver.Analyzer + 88, // 2: luceneserver.Field.script:type_name -> luceneserver.Script + 89, // 3: luceneserver.Field.analyzer:type_name -> luceneserver.Analyzer + 89, // 4: luceneserver.Field.indexAnalyzer:type_name -> luceneserver.Analyzer + 89, // 5: luceneserver.Field.searchAnalyzer:type_name -> luceneserver.Analyzer 2, // 6: luceneserver.Field.termVectors:type_name -> luceneserver.TermVectors 3, // 7: luceneserver.Field.facet:type_name -> luceneserver.FacetType - 88, // 8: luceneserver.Field.additionalProperties:type_name -> google.protobuf.Struct - 88, // 9: luceneserver.Field.similarityParams:type_name -> google.protobuf.Struct + 90, // 8: luceneserver.Field.additionalProperties:type_name -> google.protobuf.Struct + 90, // 9: luceneserver.Field.similarityParams:type_name -> google.protobuf.Struct 11, // 10: luceneserver.FieldDefRequest.field:type_name -> luceneserver.Field - 89, // 11: luceneserver.SettingsRequest.indexSort:type_name -> luceneserver.SortFields + 91, // 11: luceneserver.SettingsRequest.indexSort:type_name -> luceneserver.SortFields 4, // 12: luceneserver.StartIndexRequest.mode:type_name -> luceneserver.Mode - 59, // 13: luceneserver.StartIndexRequest.restore:type_name -> luceneserver.RestoreIndex - 85, // 14: luceneserver.AddDocumentRequest.fields:type_name -> luceneserver.AddDocumentRequest.FieldsEntry + 61, // 13: luceneserver.StartIndexRequest.restore:type_name -> luceneserver.RestoreIndex + 87, // 14: luceneserver.AddDocumentRequest.fields:type_name -> luceneserver.AddDocumentRequest.FieldsEntry 27, // 15: luceneserver.StatsResponse.taxonomy:type_name -> luceneserver.Taxonomy 28, // 16: luceneserver.StatsResponse.searchers:type_name -> luceneserver.Searcher 28, // 17: luceneserver.StatsResponse.currentSearcher:type_name -> luceneserver.Searcher @@ -6649,19 +6793,19 @@ var file_yelp_nrtsearch_luceneserver_proto_depIdxs = []int32{ 41, // 25: luceneserver.SuggestLookupHighlight.oneHighlight:type_name -> luceneserver.OneHighlight 49, // 26: luceneserver.CreateSnapshotResponse.snapshotId:type_name -> luceneserver.SnapshotId 49, // 27: luceneserver.ReleaseSnapshotRequest.snapshotId:type_name -> luceneserver.SnapshotId - 58, // 28: luceneserver.IndicesResponse.indicesResponse:type_name -> luceneserver.IndexStatsResponse + 60, // 28: luceneserver.IndicesResponse.indicesResponse:type_name -> luceneserver.IndexStatsResponse 26, // 29: luceneserver.IndexStatsResponse.statsResponse:type_name -> luceneserver.StatsResponse - 65, // 30: luceneserver.CopyState.filesMetadata:type_name -> luceneserver.FilesMetadata - 66, // 31: luceneserver.FilesMetadata.fileMetadata:type_name -> luceneserver.FileMetadata - 65, // 32: luceneserver.CopyFiles.filesMetadata:type_name -> luceneserver.FilesMetadata - 70, // 33: luceneserver.FilesInfo.fileInfo:type_name -> luceneserver.FileInfo + 67, // 30: luceneserver.CopyState.filesMetadata:type_name -> luceneserver.FilesMetadata + 68, // 31: luceneserver.FilesMetadata.fileMetadata:type_name -> luceneserver.FileMetadata + 67, // 32: luceneserver.CopyFiles.filesMetadata:type_name -> luceneserver.FilesMetadata + 72, // 33: luceneserver.FilesInfo.fileInfo:type_name -> luceneserver.FileInfo 5, // 34: luceneserver.HealthCheckResponse.health:type_name -> luceneserver.TransferStatusCode 5, // 35: luceneserver.TransferStatus.Code:type_name -> luceneserver.TransferStatusCode - 80, // 36: luceneserver.GetNodesResponse.nodes:type_name -> luceneserver.NodeInfo - 90, // 37: luceneserver.DeleteByQueryRequest.query:type_name -> luceneserver.Query + 82, // 36: luceneserver.GetNodesResponse.nodes:type_name -> luceneserver.NodeInfo + 92, // 37: luceneserver.DeleteByQueryRequest.query:type_name -> luceneserver.Query 6, // 38: luceneserver.ForceMergeResponse.status:type_name -> luceneserver.ForceMergeResponse.Status 19, // 39: luceneserver.AddDocumentRequest.MultiValuedField.faceHierarchyPaths:type_name -> luceneserver.FacetHierarchyPath - 84, // 40: luceneserver.AddDocumentRequest.FieldsEntry.value:type_name -> luceneserver.AddDocumentRequest.MultiValuedField + 86, // 40: luceneserver.AddDocumentRequest.FieldsEntry.value:type_name -> luceneserver.AddDocumentRequest.MultiValuedField 7, // 41: luceneserver.LuceneServer.createIndex:input_type -> luceneserver.CreateIndexRequest 9, // 42: luceneserver.LuceneServer.liveSettings:input_type -> luceneserver.LiveSettingsRequest 12, // 43: luceneserver.LuceneServer.registerFields:input_type -> luceneserver.FieldDefRequest @@ -6673,9 +6817,9 @@ var file_yelp_nrtsearch_luceneserver_proto_depIdxs = []int32{ 21, // 49: luceneserver.LuceneServer.refresh:input_type -> luceneserver.RefreshRequest 23, // 50: luceneserver.LuceneServer.commit:input_type -> luceneserver.CommitRequest 25, // 51: luceneserver.LuceneServer.stats:input_type -> luceneserver.StatsRequest - 91, // 52: luceneserver.LuceneServer.search:input_type -> luceneserver.SearchRequest + 93, // 52: luceneserver.LuceneServer.search:input_type -> luceneserver.SearchRequest 18, // 53: luceneserver.LuceneServer.delete:input_type -> luceneserver.AddDocumentRequest - 81, // 54: luceneserver.LuceneServer.deleteByQuery:input_type -> luceneserver.DeleteByQueryRequest + 83, // 54: luceneserver.LuceneServer.deleteByQuery:input_type -> luceneserver.DeleteByQueryRequest 29, // 55: luceneserver.LuceneServer.deleteAll:input_type -> luceneserver.DeleteAllDocumentsRequest 31, // 56: luceneserver.LuceneServer.deleteIndex:input_type -> luceneserver.DeleteIndexRequest 35, // 57: luceneserver.LuceneServer.buildSuggest:input_type -> luceneserver.BuildSuggestRequest @@ -6685,59 +6829,61 @@ var file_yelp_nrtsearch_luceneserver_proto_depIdxs = []int32{ 50, // 61: luceneserver.LuceneServer.releaseSnapshot:input_type -> luceneserver.ReleaseSnapshotRequest 52, // 62: luceneserver.LuceneServer.getAllSnapshotIndexGen:input_type -> luceneserver.GetAllSnapshotGenRequest 54, // 63: luceneserver.LuceneServer.backupIndex:input_type -> luceneserver.BackupIndexRequest - 60, // 64: luceneserver.LuceneServer.state:input_type -> luceneserver.StateRequest - 72, // 65: luceneserver.LuceneServer.status:input_type -> luceneserver.HealthCheckRequest - 92, // 66: luceneserver.LuceneServer.metrics:input_type -> google.protobuf.Empty - 56, // 67: luceneserver.LuceneServer.indices:input_type -> luceneserver.IndicesRequest - 82, // 68: luceneserver.LuceneServer.forceMerge:input_type -> luceneserver.ForceMergeRequest - 62, // 69: luceneserver.ReplicationServer.addReplicas:input_type -> luceneserver.AddReplicaRequest - 68, // 70: luceneserver.ReplicationServer.recvCopyState:input_type -> luceneserver.CopyStateRequest - 71, // 71: luceneserver.ReplicationServer.sendRawFile:input_type -> luceneserver.RawFileChunk - 70, // 72: luceneserver.ReplicationServer.recvRawFile:input_type -> luceneserver.FileInfo - 67, // 73: luceneserver.ReplicationServer.copyFiles:input_type -> luceneserver.CopyFiles - 75, // 74: luceneserver.ReplicationServer.newNRTPoint:input_type -> luceneserver.NewNRTPoint - 76, // 75: luceneserver.ReplicationServer.writeNRTPoint:input_type -> luceneserver.IndexName - 76, // 76: luceneserver.ReplicationServer.getCurrentSearcherVersion:input_type -> luceneserver.IndexName - 78, // 77: luceneserver.ReplicationServer.getConnectedNodes:input_type -> luceneserver.GetNodesRequest - 8, // 78: luceneserver.LuceneServer.createIndex:output_type -> luceneserver.CreateIndexResponse - 10, // 79: luceneserver.LuceneServer.liveSettings:output_type -> luceneserver.LiveSettingsResponse - 13, // 80: luceneserver.LuceneServer.registerFields:output_type -> luceneserver.FieldDefResponse - 13, // 81: luceneserver.LuceneServer.updateFields:output_type -> luceneserver.FieldDefResponse - 15, // 82: luceneserver.LuceneServer.settings:output_type -> luceneserver.SettingsResponse - 17, // 83: luceneserver.LuceneServer.startIndex:output_type -> luceneserver.StartIndexResponse - 33, // 84: luceneserver.LuceneServer.stopIndex:output_type -> luceneserver.DummyResponse - 20, // 85: luceneserver.LuceneServer.addDocuments:output_type -> luceneserver.AddDocumentResponse - 22, // 86: luceneserver.LuceneServer.refresh:output_type -> luceneserver.RefreshResponse - 24, // 87: luceneserver.LuceneServer.commit:output_type -> luceneserver.CommitResponse - 26, // 88: luceneserver.LuceneServer.stats:output_type -> luceneserver.StatsResponse - 93, // 89: luceneserver.LuceneServer.search:output_type -> luceneserver.SearchResponse - 20, // 90: luceneserver.LuceneServer.delete:output_type -> luceneserver.AddDocumentResponse - 20, // 91: luceneserver.LuceneServer.deleteByQuery:output_type -> luceneserver.AddDocumentResponse - 30, // 92: luceneserver.LuceneServer.deleteAll:output_type -> luceneserver.DeleteAllDocumentsResponse - 32, // 93: luceneserver.LuceneServer.deleteIndex:output_type -> luceneserver.DeleteIndexResponse - 36, // 94: luceneserver.LuceneServer.buildSuggest:output_type -> luceneserver.BuildSuggestResponse - 38, // 95: luceneserver.LuceneServer.suggestLookup:output_type -> luceneserver.SuggestLookupResponse - 36, // 96: luceneserver.LuceneServer.updateSuggest:output_type -> luceneserver.BuildSuggestResponse - 48, // 97: luceneserver.LuceneServer.createSnapshot:output_type -> luceneserver.CreateSnapshotResponse - 51, // 98: luceneserver.LuceneServer.releaseSnapshot:output_type -> luceneserver.ReleaseSnapshotResponse - 53, // 99: luceneserver.LuceneServer.getAllSnapshotIndexGen:output_type -> luceneserver.GetAllSnapshotGenResponse - 55, // 100: luceneserver.LuceneServer.backupIndex:output_type -> luceneserver.BackupIndexResponse - 61, // 101: luceneserver.LuceneServer.state:output_type -> luceneserver.StateResponse - 73, // 102: luceneserver.LuceneServer.status:output_type -> luceneserver.HealthCheckResponse - 94, // 103: luceneserver.LuceneServer.metrics:output_type -> google.api.HttpBody - 57, // 104: luceneserver.LuceneServer.indices:output_type -> luceneserver.IndicesResponse - 83, // 105: luceneserver.LuceneServer.forceMerge:output_type -> luceneserver.ForceMergeResponse - 63, // 106: luceneserver.ReplicationServer.addReplicas:output_type -> luceneserver.AddReplicaResponse - 64, // 107: luceneserver.ReplicationServer.recvCopyState:output_type -> luceneserver.CopyState - 74, // 108: luceneserver.ReplicationServer.sendRawFile:output_type -> luceneserver.TransferStatus - 71, // 109: luceneserver.ReplicationServer.recvRawFile:output_type -> luceneserver.RawFileChunk - 74, // 110: luceneserver.ReplicationServer.copyFiles:output_type -> luceneserver.TransferStatus - 74, // 111: luceneserver.ReplicationServer.newNRTPoint:output_type -> luceneserver.TransferStatus - 77, // 112: luceneserver.ReplicationServer.writeNRTPoint:output_type -> luceneserver.SearcherVersion - 77, // 113: luceneserver.ReplicationServer.getCurrentSearcherVersion:output_type -> luceneserver.SearcherVersion - 79, // 114: luceneserver.ReplicationServer.getConnectedNodes:output_type -> luceneserver.GetNodesResponse - 78, // [78:115] is the sub-list for method output_type - 41, // [41:78] is the sub-list for method input_type + 56, // 64: luceneserver.LuceneServer.deleteIndexBackup:input_type -> luceneserver.DeleteIndexBackupRequest + 62, // 65: luceneserver.LuceneServer.state:input_type -> luceneserver.StateRequest + 74, // 66: luceneserver.LuceneServer.status:input_type -> luceneserver.HealthCheckRequest + 94, // 67: luceneserver.LuceneServer.metrics:input_type -> google.protobuf.Empty + 58, // 68: luceneserver.LuceneServer.indices:input_type -> luceneserver.IndicesRequest + 84, // 69: luceneserver.LuceneServer.forceMerge:input_type -> luceneserver.ForceMergeRequest + 64, // 70: luceneserver.ReplicationServer.addReplicas:input_type -> luceneserver.AddReplicaRequest + 70, // 71: luceneserver.ReplicationServer.recvCopyState:input_type -> luceneserver.CopyStateRequest + 73, // 72: luceneserver.ReplicationServer.sendRawFile:input_type -> luceneserver.RawFileChunk + 72, // 73: luceneserver.ReplicationServer.recvRawFile:input_type -> luceneserver.FileInfo + 69, // 74: luceneserver.ReplicationServer.copyFiles:input_type -> luceneserver.CopyFiles + 77, // 75: luceneserver.ReplicationServer.newNRTPoint:input_type -> luceneserver.NewNRTPoint + 78, // 76: luceneserver.ReplicationServer.writeNRTPoint:input_type -> luceneserver.IndexName + 78, // 77: luceneserver.ReplicationServer.getCurrentSearcherVersion:input_type -> luceneserver.IndexName + 80, // 78: luceneserver.ReplicationServer.getConnectedNodes:input_type -> luceneserver.GetNodesRequest + 8, // 79: luceneserver.LuceneServer.createIndex:output_type -> luceneserver.CreateIndexResponse + 10, // 80: luceneserver.LuceneServer.liveSettings:output_type -> luceneserver.LiveSettingsResponse + 13, // 81: luceneserver.LuceneServer.registerFields:output_type -> luceneserver.FieldDefResponse + 13, // 82: luceneserver.LuceneServer.updateFields:output_type -> luceneserver.FieldDefResponse + 15, // 83: luceneserver.LuceneServer.settings:output_type -> luceneserver.SettingsResponse + 17, // 84: luceneserver.LuceneServer.startIndex:output_type -> luceneserver.StartIndexResponse + 33, // 85: luceneserver.LuceneServer.stopIndex:output_type -> luceneserver.DummyResponse + 20, // 86: luceneserver.LuceneServer.addDocuments:output_type -> luceneserver.AddDocumentResponse + 22, // 87: luceneserver.LuceneServer.refresh:output_type -> luceneserver.RefreshResponse + 24, // 88: luceneserver.LuceneServer.commit:output_type -> luceneserver.CommitResponse + 26, // 89: luceneserver.LuceneServer.stats:output_type -> luceneserver.StatsResponse + 95, // 90: luceneserver.LuceneServer.search:output_type -> luceneserver.SearchResponse + 20, // 91: luceneserver.LuceneServer.delete:output_type -> luceneserver.AddDocumentResponse + 20, // 92: luceneserver.LuceneServer.deleteByQuery:output_type -> luceneserver.AddDocumentResponse + 30, // 93: luceneserver.LuceneServer.deleteAll:output_type -> luceneserver.DeleteAllDocumentsResponse + 32, // 94: luceneserver.LuceneServer.deleteIndex:output_type -> luceneserver.DeleteIndexResponse + 36, // 95: luceneserver.LuceneServer.buildSuggest:output_type -> luceneserver.BuildSuggestResponse + 38, // 96: luceneserver.LuceneServer.suggestLookup:output_type -> luceneserver.SuggestLookupResponse + 36, // 97: luceneserver.LuceneServer.updateSuggest:output_type -> luceneserver.BuildSuggestResponse + 48, // 98: luceneserver.LuceneServer.createSnapshot:output_type -> luceneserver.CreateSnapshotResponse + 51, // 99: luceneserver.LuceneServer.releaseSnapshot:output_type -> luceneserver.ReleaseSnapshotResponse + 53, // 100: luceneserver.LuceneServer.getAllSnapshotIndexGen:output_type -> luceneserver.GetAllSnapshotGenResponse + 55, // 101: luceneserver.LuceneServer.backupIndex:output_type -> luceneserver.BackupIndexResponse + 57, // 102: luceneserver.LuceneServer.deleteIndexBackup:output_type -> luceneserver.DeleteIndexBackupResponse + 63, // 103: luceneserver.LuceneServer.state:output_type -> luceneserver.StateResponse + 75, // 104: luceneserver.LuceneServer.status:output_type -> luceneserver.HealthCheckResponse + 96, // 105: luceneserver.LuceneServer.metrics:output_type -> google.api.HttpBody + 59, // 106: luceneserver.LuceneServer.indices:output_type -> luceneserver.IndicesResponse + 85, // 107: luceneserver.LuceneServer.forceMerge:output_type -> luceneserver.ForceMergeResponse + 65, // 108: luceneserver.ReplicationServer.addReplicas:output_type -> luceneserver.AddReplicaResponse + 66, // 109: luceneserver.ReplicationServer.recvCopyState:output_type -> luceneserver.CopyState + 76, // 110: luceneserver.ReplicationServer.sendRawFile:output_type -> luceneserver.TransferStatus + 73, // 111: luceneserver.ReplicationServer.recvRawFile:output_type -> luceneserver.RawFileChunk + 76, // 112: luceneserver.ReplicationServer.copyFiles:output_type -> luceneserver.TransferStatus + 76, // 113: luceneserver.ReplicationServer.newNRTPoint:output_type -> luceneserver.TransferStatus + 79, // 114: luceneserver.ReplicationServer.writeNRTPoint:output_type -> luceneserver.SearcherVersion + 79, // 115: luceneserver.ReplicationServer.getCurrentSearcherVersion:output_type -> luceneserver.SearcherVersion + 81, // 116: luceneserver.ReplicationServer.getConnectedNodes:output_type -> luceneserver.GetNodesResponse + 79, // [79:117] is the sub-list for method output_type + 41, // [41:79] is the sub-list for method input_type 41, // [41:41] is the sub-list for extension type_name 41, // [41:41] is the sub-list for extension extendee 0, // [0:41] is the sub-list for field type_name @@ -7340,7 +7486,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndicesRequest); i { + switch v := v.(*DeleteIndexBackupRequest); i { case 0: return &v.state case 1: @@ -7352,7 +7498,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndicesResponse); i { + switch v := v.(*DeleteIndexBackupResponse); i { case 0: return &v.state case 1: @@ -7364,7 +7510,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndexStatsResponse); i { + switch v := v.(*IndicesRequest); i { case 0: return &v.state case 1: @@ -7376,7 +7522,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestoreIndex); i { + switch v := v.(*IndicesResponse); i { case 0: return &v.state case 1: @@ -7388,7 +7534,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateRequest); i { + switch v := v.(*IndexStatsResponse); i { case 0: return &v.state case 1: @@ -7400,7 +7546,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateResponse); i { + switch v := v.(*RestoreIndex); i { case 0: return &v.state case 1: @@ -7412,7 +7558,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddReplicaRequest); i { + switch v := v.(*StateRequest); i { case 0: return &v.state case 1: @@ -7424,7 +7570,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddReplicaResponse); i { + switch v := v.(*StateResponse); i { case 0: return &v.state case 1: @@ -7436,7 +7582,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyState); i { + switch v := v.(*AddReplicaRequest); i { case 0: return &v.state case 1: @@ -7448,7 +7594,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesMetadata); i { + switch v := v.(*AddReplicaResponse); i { case 0: return &v.state case 1: @@ -7460,7 +7606,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileMetadata); i { + switch v := v.(*CopyState); i { case 0: return &v.state case 1: @@ -7472,7 +7618,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyFiles); i { + switch v := v.(*FilesMetadata); i { case 0: return &v.state case 1: @@ -7484,7 +7630,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyStateRequest); i { + switch v := v.(*FileMetadata); i { case 0: return &v.state case 1: @@ -7496,7 +7642,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FilesInfo); i { + switch v := v.(*CopyFiles); i { case 0: return &v.state case 1: @@ -7508,7 +7654,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileInfo); i { + switch v := v.(*CopyStateRequest); i { case 0: return &v.state case 1: @@ -7520,7 +7666,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RawFileChunk); i { + switch v := v.(*FilesInfo); i { case 0: return &v.state case 1: @@ -7532,7 +7678,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckRequest); i { + switch v := v.(*FileInfo); i { case 0: return &v.state case 1: @@ -7544,7 +7690,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckResponse); i { + switch v := v.(*RawFileChunk); i { case 0: return &v.state case 1: @@ -7556,7 +7702,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransferStatus); i { + switch v := v.(*HealthCheckRequest); i { case 0: return &v.state case 1: @@ -7568,7 +7714,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NewNRTPoint); i { + switch v := v.(*HealthCheckResponse); i { case 0: return &v.state case 1: @@ -7580,7 +7726,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndexName); i { + switch v := v.(*TransferStatus); i { case 0: return &v.state case 1: @@ -7592,7 +7738,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SearcherVersion); i { + switch v := v.(*NewNRTPoint); i { case 0: return &v.state case 1: @@ -7604,7 +7750,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodesRequest); i { + switch v := v.(*IndexName); i { case 0: return &v.state case 1: @@ -7616,7 +7762,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodesResponse); i { + switch v := v.(*SearcherVersion); i { case 0: return &v.state case 1: @@ -7628,7 +7774,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NodeInfo); i { + switch v := v.(*GetNodesRequest); i { case 0: return &v.state case 1: @@ -7640,7 +7786,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteByQueryRequest); i { + switch v := v.(*GetNodesResponse); i { case 0: return &v.state case 1: @@ -7652,7 +7798,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ForceMergeRequest); i { + switch v := v.(*NodeInfo); i { case 0: return &v.state case 1: @@ -7664,7 +7810,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ForceMergeResponse); i { + switch v := v.(*DeleteByQueryRequest); i { case 0: return &v.state case 1: @@ -7676,6 +7822,30 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { } } file_yelp_nrtsearch_luceneserver_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ForceMergeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_yelp_nrtsearch_luceneserver_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ForceMergeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_yelp_nrtsearch_luceneserver_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDocumentRequest_MultiValuedField); i { case 0: return &v.state @@ -7712,7 +7882,7 @@ func file_yelp_nrtsearch_luceneserver_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_yelp_nrtsearch_luceneserver_proto_rawDesc, NumEnums: 7, - NumMessages: 79, + NumMessages: 81, NumExtensions: 0, NumServices: 2, }, @@ -7807,6 +7977,7 @@ type LuceneServerClient interface { GetAllSnapshotIndexGen(ctx context.Context, in *GetAllSnapshotGenRequest, opts ...grpc.CallOption) (*GetAllSnapshotGenResponse, error) // backs up a resource (index) and it associated metadata e.g. settings, schema to s3 BackupIndex(ctx context.Context, in *BackupIndexRequest, opts ...grpc.CallOption) (*BackupIndexResponse, error) + DeleteIndexBackup(ctx context.Context, in *DeleteIndexBackupRequest, opts ...grpc.CallOption) (*DeleteIndexBackupResponse, error) // Gets the state of a started index, includes settings, live_settings, search schema, suggest schema State(ctx context.Context, in *StateRequest, opts ...grpc.CallOption) (*StateResponse, error) // healthcheck @@ -8058,6 +8229,15 @@ func (c *luceneServerClient) BackupIndex(ctx context.Context, in *BackupIndexReq return out, nil } +func (c *luceneServerClient) DeleteIndexBackup(ctx context.Context, in *DeleteIndexBackupRequest, opts ...grpc.CallOption) (*DeleteIndexBackupResponse, error) { + out := new(DeleteIndexBackupResponse) + err := c.cc.Invoke(ctx, "/luceneserver.LuceneServer/deleteIndexBackup", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *luceneServerClient) State(ctx context.Context, in *StateRequest, opts ...grpc.CallOption) (*StateResponse, error) { out := new(StateResponse) err := c.cc.Invoke(ctx, "/luceneserver.LuceneServer/state", in, out, opts...) @@ -8173,6 +8353,7 @@ type LuceneServerServer interface { GetAllSnapshotIndexGen(context.Context, *GetAllSnapshotGenRequest) (*GetAllSnapshotGenResponse, error) // backs up a resource (index) and it associated metadata e.g. settings, schema to s3 BackupIndex(context.Context, *BackupIndexRequest) (*BackupIndexResponse, error) + DeleteIndexBackup(context.Context, *DeleteIndexBackupRequest) (*DeleteIndexBackupResponse, error) // Gets the state of a started index, includes settings, live_settings, search schema, suggest schema State(context.Context, *StateRequest) (*StateResponse, error) // healthcheck @@ -8257,6 +8438,9 @@ func (*UnimplementedLuceneServerServer) GetAllSnapshotIndexGen(context.Context, func (*UnimplementedLuceneServerServer) BackupIndex(context.Context, *BackupIndexRequest) (*BackupIndexResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BackupIndex not implemented") } +func (*UnimplementedLuceneServerServer) DeleteIndexBackup(context.Context, *DeleteIndexBackupRequest) (*DeleteIndexBackupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteIndexBackup not implemented") +} func (*UnimplementedLuceneServerServer) State(context.Context, *StateRequest) (*StateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method State not implemented") } @@ -8699,6 +8883,24 @@ func _LuceneServer_BackupIndex_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _LuceneServer_DeleteIndexBackup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteIndexBackupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LuceneServerServer).DeleteIndexBackup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/luceneserver.LuceneServer/DeleteIndexBackup", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LuceneServerServer).DeleteIndexBackup(ctx, req.(*DeleteIndexBackupRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _LuceneServer_State_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StateRequest) if err := dec(in); err != nil { @@ -8881,6 +9083,10 @@ var _LuceneServer_serviceDesc = grpc.ServiceDesc{ MethodName: "backupIndex", Handler: _LuceneServer_BackupIndex_Handler, }, + { + MethodName: "deleteIndexBackup", + Handler: _LuceneServer_DeleteIndexBackup_Handler, + }, { MethodName: "state", Handler: _LuceneServer_State_Handler, diff --git a/grpc-gateway/luceneserver.pb.gw.go b/grpc-gateway/luceneserver.pb.gw.go index 0795b7aa5..8d6e6c904 100644 --- a/grpc-gateway/luceneserver.pb.gw.go +++ b/grpc-gateway/luceneserver.pb.gw.go @@ -900,6 +900,40 @@ func local_request_LuceneServer_BackupIndex_0(ctx context.Context, marshaler run } +func request_LuceneServer_DeleteIndexBackup_0(ctx context.Context, marshaler runtime.Marshaler, client LuceneServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteIndexBackupRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteIndexBackup(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_LuceneServer_DeleteIndexBackup_0(ctx context.Context, marshaler runtime.Marshaler, server LuceneServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteIndexBackupRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteIndexBackup(ctx, &protoReq) + return msg, metadata, err + +} + func request_LuceneServer_State_0(ctx context.Context, marshaler runtime.Marshaler, client LuceneServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq StateRequest var metadata runtime.ServerMetadata @@ -1636,6 +1670,29 @@ func RegisterLuceneServerHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_LuceneServer_DeleteIndexBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_LuceneServer_DeleteIndexBackup_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_LuceneServer_DeleteIndexBackup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_LuceneServer_State_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2295,6 +2352,26 @@ func RegisterLuceneServerHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_LuceneServer_DeleteIndexBackup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_LuceneServer_DeleteIndexBackup_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_LuceneServer_DeleteIndexBackup_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_LuceneServer_State_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2467,6 +2544,8 @@ var ( pattern_LuceneServer_BackupIndex_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "backup_index"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_LuceneServer_DeleteIndexBackup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "delete_index_backup"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_LuceneServer_State_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "state"}, "", runtime.AssumeColonVerbOpt(true))) pattern_LuceneServer_State_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"v1", "state", "indexName"}, "", runtime.AssumeColonVerbOpt(true))) @@ -2529,6 +2608,8 @@ var ( forward_LuceneServer_BackupIndex_0 = runtime.ForwardResponseMessage + forward_LuceneServer_DeleteIndexBackup_0 = runtime.ForwardResponseMessage + forward_LuceneServer_State_0 = runtime.ForwardResponseMessage forward_LuceneServer_State_1 = runtime.ForwardResponseMessage diff --git a/grpc-gateway/luceneserver.swagger.json b/grpc-gateway/luceneserver.swagger.json index 36a09e73f..7505f87b6 100644 --- a/grpc-gateway/luceneserver.swagger.json +++ b/grpc-gateway/luceneserver.swagger.json @@ -332,6 +332,38 @@ ] } }, + "/v1/delete_index_backup": { + "post": { + "operationId": "LuceneServer_deleteIndexBackup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/luceneserverDeleteIndexBackupResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/luceneserverDeleteIndexBackupRequest" + } + } + ], + "tags": [ + "LuceneServer" + ] + } + }, "/v1/force_merge": { "post": { "operationId": "LuceneServer_forceMerge", @@ -1659,6 +1691,35 @@ } } }, + "luceneserverDeleteIndexBackupRequest": { + "type": "object", + "properties": { + "indexName": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "resourceName": { + "type": "string" + }, + "nDays": { + "type": "integer", + "format": "int32" + } + } + }, + "luceneserverDeleteIndexBackupResponse": { + "type": "object", + "properties": { + "deletedVersionHashes": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "luceneserverDeleteIndexRequest": { "type": "object", "properties": { diff --git a/grpc-gateway/search.pb.go b/grpc-gateway/search.pb.go index fc4fe8408..4c911182b 100644 --- a/grpc-gateway/search.pb.go +++ b/grpc-gateway/search.pb.go @@ -2,7 +2,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.25.0-devel +// protoc-gen-go v1.23.0 // protoc v3.11.4 // source: yelp/nrtsearch/search.proto diff --git a/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java b/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java index 6beb5adf4..eb554cc4c 100644 --- a/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java +++ b/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java @@ -35,6 +35,7 @@ import com.yelp.nrtsearch.server.luceneserver.DeleteAllDocumentsHandler; import com.yelp.nrtsearch.server.luceneserver.DeleteByQueryHandler; import com.yelp.nrtsearch.server.luceneserver.DeleteDocumentsHandler; +import com.yelp.nrtsearch.server.luceneserver.DeleteIndexBackupHandler; import com.yelp.nrtsearch.server.luceneserver.DeleteIndexHandler; import com.yelp.nrtsearch.server.luceneserver.GetNodesInfoHandler; import com.yelp.nrtsearch.server.luceneserver.GetStateHandler; @@ -1127,6 +1128,40 @@ public void backupIndex( } } + @Override + public void deleteIndexBackup( + DeleteIndexBackupRequest request, + StreamObserver responseObserver) { + try { + IndexState indexState = globalState.getIndex(request.getIndexName()); + DeleteIndexBackupHandler backupIndexRequestHandler = new DeleteIndexBackupHandler(archiver); + DeleteIndexBackupResponse reply = backupIndexRequestHandler.handle(indexState, request); + logger.info("DeleteIndexBackupHandler returned results {}", reply.toString()); + responseObserver.onNext(reply); + responseObserver.onCompleted(); + } catch (Exception e) { + logger.warn( + "error while trying to deleteIndexBackup for index: {} for service: {}, resource: {}, nDays: {}", + request.getIndexName(), + request.getServiceName(), + request.getResourceName(), + request.getNDays(), + e); + responseObserver.onError( + Status.UNKNOWN + .withCause(e) + .withDescription( + String.format( + "error while trying to deleteIndexBackup for index %s for service: %s, resource: %s, nDays: %s", + request.getIndexName(), + request.getServiceName(), + request.getResourceName(), + request.getNDays())) + .augmentDescription(e.getMessage()) + .asRuntimeException()); + } + } + @Override public void metrics(Empty request, StreamObserver responseObserver) { try { diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/BackupIndexRequestHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/BackupIndexRequestHandler.java index f67be195d..c4a57325d 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/BackupIndexRequestHandler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/BackupIndexRequestHandler.java @@ -83,21 +83,13 @@ public BackupIndexResponse handle(IndexState indexState, BackupIndexRequest back return backupIndexResponseBuilder.build(); } - public static String getResourceMetadata(String resourceName) { - return String.format("%s_metadata", resourceName); - } - - public static String getResourceData(String resourceName) { - return String.format("%s_data", resourceName); - } - public void uploadArtifacts( String serviceName, String resourceName, IndexState indexState, BackupIndexResponse.Builder backupIndexResponseBuilder) throws IOException { - String resourceData = getResourceData(resourceName); + String resourceData = IndexBackupUtils.getResourceData(resourceName); String versionHash = archiver.upload(serviceName, resourceData, indexState.rootDir); archiver.blessVersion(serviceName, resourceData, versionHash); backupIndexResponseBuilder.setDataVersionHash(versionHash); @@ -111,7 +103,7 @@ public void uploadMetadata( IndexState indexState, BackupIndexResponse.Builder backupIndexResponseBuilder) throws IOException { - String resourceMetadata = getResourceMetadata(resourceName); + String resourceMetadata = IndexBackupUtils.getResourceMetadata(resourceName); String versionHash = archiver.upload(serviceName, resourceMetadata, indexState.globalState.stateDir); archiver.blessVersion(serviceName, resourceMetadata, versionHash); diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandler.java new file mode 100644 index 000000000..ddb049ed0 --- /dev/null +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandler.java @@ -0,0 +1,98 @@ +/* + * Copyright 2020 Yelp Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.yelp.nrtsearch.server.luceneserver; + +import com.yelp.nrtsearch.server.grpc.DeleteIndexBackupRequest; +import com.yelp.nrtsearch.server.grpc.DeleteIndexBackupResponse; +import com.yelp.nrtsearch.server.utils.Archiver; +import com.yelp.nrtsearch.server.utils.VersionedResource; +import java.io.IOException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DeleteIndexBackupHandler + implements Handler { + private static final Logger logger = LoggerFactory.getLogger(DeleteIndexBackupHandler.class); + private final Archiver archiver; + + public DeleteIndexBackupHandler(Archiver archiver) { + this.archiver = archiver; + } + + @Override + public DeleteIndexBackupResponse handle( + IndexState indexState, DeleteIndexBackupRequest deleteIndexBackupRequest) + throws HandlerException { + + DeleteIndexBackupResponse.Builder deleteIndexBackupResponseBuilder = + DeleteIndexBackupResponse.newBuilder(); + + String indexName = deleteIndexBackupRequest.getIndexName(); + String serviceName = deleteIndexBackupRequest.getServiceName(); + String resourceName = deleteIndexBackupRequest.getResourceName(); + String resourceData = IndexBackupUtils.getResourceData(resourceName); + String resourceMetadata = IndexBackupUtils.getResourceMetadata(resourceName); + int nDays = deleteIndexBackupRequest.getNDays(); + + Set deletedVersionHashes = new HashSet<>(); + + try { + List versionedResourceData = + archiver.getVersionedResource(serviceName, resourceData); + List versionedResourceMetadata = + archiver.getVersionedResource(serviceName, resourceMetadata); + + Instant now = Instant.now(); + + List objectsOlderThanNDays = + Stream.concat(versionedResourceData.stream(), versionedResourceMetadata.stream()) + .filter(resourceObject -> isOlderThanNDays(resourceObject, now, nDays)) + .collect(Collectors.toList()); + + for (VersionedResource objectToDelete : objectsOlderThanNDays) { + archiver.deleteVersion( + objectToDelete.getServiceName(), + objectToDelete.getResourceName(), + objectToDelete.getVersionHash()); + deletedVersionHashes.add(objectToDelete.getVersionHash()); + } + } catch (IOException e) { + logger.error( + "Error while trying to delete backup of index {} with serviceName {}, resourceName {}, nDays: {}", + indexName, + serviceName, + resourceName, + nDays, + e); + return deleteIndexBackupResponseBuilder.build(); + } + + return deleteIndexBackupResponseBuilder + .addAllDeletedVersionHashes(deletedVersionHashes) + .build(); + } + + public static boolean isOlderThanNDays(VersionedResource resource, Instant now, int nDays) { + return now.minus(nDays, ChronoUnit.DAYS).isAfter(resource.getCreationTimestamp()); + } +} diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/IndexBackupUtils.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/IndexBackupUtils.java new file mode 100644 index 000000000..3fa990360 --- /dev/null +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/IndexBackupUtils.java @@ -0,0 +1,27 @@ +/* + * Copyright 2020 Yelp Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.yelp.nrtsearch.server.luceneserver; + +public class IndexBackupUtils { + + public static String getResourceMetadata(String resourceName) { + return String.format("%s_metadata", resourceName); + } + + public static String getResourceData(String resourceName) { + return String.format("%s_data", resourceName); + } +} diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/StartIndexHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/StartIndexHandler.java index 9977d5fcc..56af1441e 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/StartIndexHandler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/StartIndexHandler.java @@ -133,9 +133,9 @@ public Path downloadArtifact( String serviceName, String resourceName, INDEXED_DATA_TYPE indexDataType) { String resource; if (indexDataType.equals(INDEXED_DATA_TYPE.DATA)) { - resource = BackupIndexRequestHandler.getResourceData(resourceName); + resource = IndexBackupUtils.getResourceData(resourceName); } else if (indexDataType.equals(INDEXED_DATA_TYPE.STATE)) { - resource = BackupIndexRequestHandler.getResourceMetadata(resourceName); + resource = IndexBackupUtils.getResourceMetadata(resourceName); } else { throw new RuntimeException("Invalid INDEXED_DATA_TYPE " + indexDataType); } diff --git a/src/main/java/com/yelp/nrtsearch/server/utils/Archiver.java b/src/main/java/com/yelp/nrtsearch/server/utils/Archiver.java index 12325fb55..8ebfa8520 100644 --- a/src/main/java/com/yelp/nrtsearch/server/utils/Archiver.java +++ b/src/main/java/com/yelp/nrtsearch/server/utils/Archiver.java @@ -27,5 +27,10 @@ public interface Archiver { boolean blessVersion(final String serviceName, final String resource, String versionHash) throws IOException; + boolean deleteVersion(final String serviceName, final String resource, String versionHash) + throws IOException; + List getResources(final String serviceName); + + List getVersionedResource(final String serviceName, final String resource); } diff --git a/src/main/java/com/yelp/nrtsearch/server/utils/ArchiverImpl.java b/src/main/java/com/yelp/nrtsearch/server/utils/ArchiverImpl.java index 1013ff73a..0c16c1311 100644 --- a/src/main/java/com/yelp/nrtsearch/server/utils/ArchiverImpl.java +++ b/src/main/java/com/yelp/nrtsearch/server/utils/ArchiverImpl.java @@ -21,6 +21,7 @@ import com.amazonaws.services.s3.model.ListObjectsRequest; import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.S3Object; +import com.amazonaws.services.s3.model.S3ObjectSummary; import com.amazonaws.services.s3.transfer.Download; import com.amazonaws.services.s3.transfer.PersistableTransfer; import com.amazonaws.services.s3.transfer.TransferManager; @@ -136,6 +137,33 @@ public List getResources(String serviceName) { return resources; } + @Override + public List getVersionedResource(String serviceName, String resource) { + List resources = new ArrayList<>(); + ListObjectsRequest listObjectsRequest = + new ListObjectsRequest() + .withBucketName(bucketName) + .withPrefix(serviceName + DELIMITER + resource + DELIMITER) + .withDelimiter(DELIMITER); + + List objects = s3.listObjects(listObjectsRequest).getObjectSummaries(); + + for (S3ObjectSummary object : objects) { + String key = object.getKey(); + String[] prefix = key.split(DELIMITER); + String versionHash = prefix[prefix.length - 1]; + VersionedResource versionedResource = + VersionedResource.builder() + .setServiceName(serviceName) + .setResourceName(resource) + .setVersionHash(versionHash) + .setCreationTimestamp(object.getLastModified().toInstant()) + .createVersionedResource(); + resources.add(versionedResource); + } + return resources; + } + @Override public String upload(final String serviceName, final String resource, Path sourceDir) throws IOException { @@ -240,6 +268,12 @@ private void getVersionContent( } } + @Override + public boolean deleteVersion(String serviceName, String resource, String versionHash) + throws IOException { + return versionManger.deleteVersion(serviceName, resource, versionHash); + } + private String getTmpName() { return UUID.randomUUID().toString() + TMP_SUFFIX; } diff --git a/src/main/java/com/yelp/nrtsearch/server/utils/VersionManager.java b/src/main/java/com/yelp/nrtsearch/server/utils/VersionManager.java index a2cee6f59..77e6dedee 100644 --- a/src/main/java/com/yelp/nrtsearch/server/utils/VersionManager.java +++ b/src/main/java/com/yelp/nrtsearch/server/utils/VersionManager.java @@ -16,6 +16,7 @@ package com.yelp.nrtsearch.server.utils; import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.model.DeleteObjectRequest; import com.amazonaws.services.s3.model.S3Object; import java.io.IOException; import org.apache.commons.io.IOUtils; @@ -114,4 +115,20 @@ public boolean blessVersion(String serviceName, String resourceName, String reso return true; } + + /* Deletes a particular version of a resource. */ + public boolean deleteVersion(String serviceName, String resourceName, String resourceHash) { + final String resourceKey = String.format("%s/%s/%s", serviceName, resourceName, resourceHash); + if (!s3.doesObjectExist(bucketName, resourceKey)) { + logger.error( + "Unable to delete object: {}/{}/{} does not exist in s3", + serviceName, + resourceName, + resourceHash); + return false; + } + DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest(bucketName, resourceKey); + s3.deleteObject(deleteObjectRequest); + return true; + } } diff --git a/src/main/java/com/yelp/nrtsearch/server/utils/VersionedResource.java b/src/main/java/com/yelp/nrtsearch/server/utils/VersionedResource.java new file mode 100644 index 000000000..3c8f433cb --- /dev/null +++ b/src/main/java/com/yelp/nrtsearch/server/utils/VersionedResource.java @@ -0,0 +1,124 @@ +/* + * Copyright 2020 Yelp Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.yelp.nrtsearch.server.utils; + +import java.time.Instant; +import java.util.Objects; + +public class VersionedResource { + + private final String serviceName; + private final String resourceName; + private final String versionHash; + private final Instant creationTimestamp; + + public VersionedResource( + String serviceName, String resourceName, String versionHash, Instant creationTimestamp) { + this.serviceName = serviceName; + this.resourceName = resourceName; + this.versionHash = versionHash; + this.creationTimestamp = creationTimestamp; + } + + public String getServiceName() { + return serviceName; + } + + public String getResourceName() { + return resourceName; + } + + public String getVersionHash() { + return versionHash; + } + + public Instant getCreationTimestamp() { + return creationTimestamp; + } + + @Override + public String toString() { + return "VersionedResource{" + + "serviceName='" + + serviceName + + '\'' + + ", resourceName='" + + resourceName + + '\'' + + ", versionHash='" + + versionHash + + '\'' + + ", creationTimestamp=" + + creationTimestamp + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + VersionedResource that = (VersionedResource) o; + return Objects.equals(serviceName, that.serviceName) + && Objects.equals(resourceName, that.resourceName) + && Objects.equals(versionHash, that.versionHash) + && Objects.equals(creationTimestamp, that.creationTimestamp); + } + + @Override + public int hashCode() { + return Objects.hash(serviceName, resourceName, versionHash, creationTimestamp); + } + + public static VersionedResourceBuilder builder() { + return new VersionedResourceBuilder(); + } + + public static class VersionedResourceBuilder { + + private String serviceName; + private String resourceName; + private String versionHash; + private Instant creationTimestamp; + + public VersionedResourceBuilder setServiceName(String serviceName) { + this.serviceName = serviceName; + return this; + } + + public VersionedResourceBuilder setResourceName(String resourceName) { + this.resourceName = resourceName; + return this; + } + + public VersionedResourceBuilder setVersionHash(String versionHash) { + this.versionHash = versionHash; + return this; + } + + public VersionedResourceBuilder setCreationTimestamp(Instant creationTimestamp) { + this.creationTimestamp = creationTimestamp; + return this; + } + + public VersionedResource createVersionedResource() { + return new VersionedResource(serviceName, resourceName, versionHash, creationTimestamp); + } + } +} diff --git a/src/test/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandlerTest.java b/src/test/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandlerTest.java new file mode 100644 index 000000000..0e3009bae --- /dev/null +++ b/src/test/java/com/yelp/nrtsearch/server/luceneserver/DeleteIndexBackupHandlerTest.java @@ -0,0 +1,109 @@ +/* + * Copyright 2020 Yelp Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.yelp.nrtsearch.server.luceneserver; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.yelp.nrtsearch.server.grpc.DeleteIndexBackupRequest; +import com.yelp.nrtsearch.server.grpc.DeleteIndexBackupResponse; +import com.yelp.nrtsearch.server.luceneserver.Handler.HandlerException; +import com.yelp.nrtsearch.server.utils.Archiver; +import com.yelp.nrtsearch.server.utils.VersionedResource; +import java.io.IOException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.Arrays; +import org.junit.Assert; +import org.junit.Test; + +public class DeleteIndexBackupHandlerTest { + + @Test + public void testDeleteIndexBackupHandlerHandle() throws HandlerException, IOException { + String indexName = "testindex"; + String serviceName = "testservice"; + String resourceName = "testresource"; + int nDays = 30; + + Archiver archiver = mock(Archiver.class); + DeleteIndexBackupHandler handler = new DeleteIndexBackupHandler(archiver); + DeleteIndexBackupRequest request = + DeleteIndexBackupRequest.newBuilder() + .setIndexName(indexName) + .setServiceName(serviceName) + .setResourceName(resourceName) + .setNDays(nDays) + .build(); + + IndexState testIndex = mock(IndexState.class); + + Instant now = Instant.now(); + + Instant date1 = now.minus(20, ChronoUnit.DAYS); + Instant date2 = now.minus(40, ChronoUnit.DAYS); + + String versionHash1 = "hash_1"; + String versionHash2 = "hash_2"; + VersionedResource testVersionedResource1 = + VersionedResource.builder() + .setServiceName(serviceName) + .setResourceName(resourceName + "_data") + .setCreationTimestamp(date1) + .setVersionHash(versionHash1) + .createVersionedResource(); + + VersionedResource testVersionedResource2 = + VersionedResource.builder() + .setServiceName(serviceName) + .setResourceName(resourceName + "_data") + .setCreationTimestamp(date2) + .setVersionHash(versionHash2) + .createVersionedResource(); + + when(archiver.getVersionedResource(serviceName, resourceName + "_data")) + .thenReturn(Arrays.asList(testVersionedResource1, testVersionedResource2)); + + DeleteIndexBackupResponse response = handler.handle(testIndex, request); + + verify(archiver, never()).deleteVersion(serviceName, resourceName + "_data", versionHash1); + verify(archiver).deleteVersion(serviceName, resourceName + "_data", versionHash2); + + Assert.assertEquals(response.getDeletedVersionHashesList(), Arrays.asList(versionHash2)); + } + + @Test + public void testIsOlderThanNDays() { + + Instant now = Instant.now(); + Instant date1 = now.minus(20, ChronoUnit.DAYS); + Instant date2 = now.minus(35, ChronoUnit.DAYS); + + int nDays = 30; + + VersionedResource testObj1 = + VersionedResource.builder().setCreationTimestamp(date1).createVersionedResource(); + + Assert.assertEquals(false, DeleteIndexBackupHandler.isOlderThanNDays(testObj1, now, nDays)); + + VersionedResource testObj2 = + VersionedResource.builder().setCreationTimestamp(date2).createVersionedResource(); + + Assert.assertEquals(true, DeleteIndexBackupHandler.isOlderThanNDays(testObj2, now, nDays)); + } +} diff --git a/src/test/java/com/yelp/nrtsearch/server/utils/ArchiverTest.java b/src/test/java/com/yelp/nrtsearch/server/utils/ArchiverTest.java index ad7373ea1..91ed29af1 100644 --- a/src/test/java/com/yelp/nrtsearch/server/utils/ArchiverTest.java +++ b/src/test/java/com/yelp/nrtsearch/server/utils/ArchiverTest.java @@ -31,6 +31,7 @@ import java.nio.file.Path; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import net.jpountz.lz4.LZ4FrameInputStream; import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.junit.After; @@ -170,4 +171,45 @@ public void testGetResources() throws IOException { String[] actual = actualResources.toArray(new String[0]); Assert.assertArrayEquals(resources, actual); } + + @Test + public void testGetVersionedResource() throws IOException { + String service = "testservice"; + String resource = "testresource"; + Path sourceDir = createDirWithFiles(service, resource); + String versionHash1 = archiver.upload(service, resource, sourceDir); + String versionHash2 = archiver.upload(service, resource, sourceDir); + List actualResources = archiver.getVersionedResource(service, resource); + + List versionHashes = + actualResources.stream() + .map(VersionedResource::getVersionHash) + .collect(Collectors.toList()); + + Assert.assertTrue(versionHashes.contains(versionHash1)); + Assert.assertTrue(versionHashes.contains(versionHash2)); + Assert.assertEquals(2, versionHashes.size()); + } + + @Test + public void testDeleteVersion() throws IOException { + String service = "testservice"; + String resource = "testresource"; + Path sourceDir = createDirWithFiles(service, resource); + String versionHash1 = archiver.upload(service, resource, sourceDir); + String versionHash2 = archiver.upload(service, resource, sourceDir); + + archiver.deleteVersion(service, resource, versionHash1); + + List actualResources = archiver.getVersionedResource(service, resource); + + List versionHashes = + actualResources.stream() + .map(VersionedResource::getVersionHash) + .collect(Collectors.toList()); + + Assert.assertFalse(versionHashes.contains(versionHash1)); + Assert.assertTrue(versionHashes.contains(versionHash2)); + Assert.assertEquals(1, versionHashes.size()); + } } diff --git a/src/test/java/com/yelp/nrtsearch/server/utils/VersionManagerTest.java b/src/test/java/com/yelp/nrtsearch/server/utils/VersionManagerTest.java index c49e86d2b..0c4ff4026 100644 --- a/src/test/java/com/yelp/nrtsearch/server/utils/VersionManagerTest.java +++ b/src/test/java/com/yelp/nrtsearch/server/utils/VersionManagerTest.java @@ -21,10 +21,13 @@ import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.S3Object; +import com.amazonaws.services.s3.model.S3ObjectSummary; import com.amazonaws.util.IOUtils; import io.findify.s3mock.S3Mock; import java.io.IOException; import java.nio.file.Path; +import java.util.List; +import java.util.stream.Collectors; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -110,4 +113,29 @@ public void blessVersionWhenLatestVersionBehind() throws IOException { s3Object = s3.getObject(BUCKET_NAME, "testservice/_version/testresource/2"); assertEquals("abcdef", IOUtils.toString(s3Object.getObjectContent())); } + + @Test + public void deleteVersionWhenDoesntExist() throws IOException { + boolean result = versionManager.deleteVersion("testservice", "testresource", "abcdef"); + assertEquals(false, result); + } + + @Test + public void deleteVersionWhenExists() throws IOException { + String key1 = "testservice/testresource/abcdef"; + String key2 = "testservice/testresource/other_version"; + s3.putObject(BUCKET_NAME, key1, "foo"); + s3.putObject(BUCKET_NAME, key2, "boo"); + boolean result = versionManager.deleteVersion("testservice", "testresource", "abcdef"); + assertEquals(true, result); + + List objects = + s3.listObjects(BUCKET_NAME, "testservice/testresource/").getObjectSummaries(); + + List objectKeys = + objects.stream().map(S3ObjectSummary::getKey).collect(Collectors.toList()); + + assertTrue(objectKeys.contains(key2)); + assertFalse(objectKeys.contains(key1)); + } }