diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..056a646 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,89 @@ +run: + timeout: 10m +linters: + enable: + - errcheck + - goimports + - revive + - govet + - staticcheck + - misspell + - gocritic + - sqlclosecheck + - rowserrcheck + - nilerr + - godot + - mirror + - bodyclose + +issues: + exclude: + - Rollback + - fmt.Printf + +linters-settings: +# goimports: + # Organize imports so that local packages come after third-party packages. +# local-prefixes: github.com/NJUPT-SAST/sastoj + revive: + # Enable all rules but selectively disable ones that are too restrictive. + enable-all-rules: true + rules: + # Rules description see revive documentation: https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md + # - name: line-length-limit + # arguments: [120] # Set a reasonable line length limit + # Disable other rules that are too strict. + - name: line-length-limit + disabled: true + - name: file-header + disabled: true + - name: function-length + disabled: true + - name: max-public-structs + disabled: true + - name: function-result-limit + disabled: true + - name: banned-characters + disabled: true + - name: argument-limit + disabled: true + - name: cognitive-complexity + disabled: true + - name: cyclomatic + disabled: true + - name: confusing-results + disabled: true + - name: add-constant + disabled: true + - name: flag-parameter + disabled: true + - name: nested-structs + disabled: true + - name: import-shadowing + disabled: true + - name: early-return + disabled: true + - name: use-any + disabled: true + - name: exported + disabled: true + - name: unhandled-error + disabled: true + - name: if-return + disabled: true + - name: max-control-nesting + disabled: true + gocritic: + # Rules description see gocritic documentation: https://go-critic.com/overview#checkers-from-the-diagnostic-group + disabled-checks: + - ifElseChain + govet: + settings: + printf: # The name of the analyzer, run `go tool vet help` to see the list of all analyzers + funcs: # Run `go tool vet help printf` to see the full configuration of `printf`. + - common.Errorf # Treat common.Errorf as a printf-style function. + enable-all: true + # Rules description see govet documentation: https://pkg.go.dev/github.com/golangci/govet + disable: + - fieldalignment + - shadow \ No newline at end of file diff --git a/api/sastoj/admin/admin/service/v1/admin.pb.go b/api/sastoj/admin/admin/service/v1/admin.pb.go index 616e80b..39a7ea6 100644 --- a/api/sastoj/admin/admin/service/v1/admin.pb.go +++ b/api/sastoj/admin/admin/service/v1/admin.pb.go @@ -150,77 +150,6 @@ func (Visibility) EnumDescriptor() ([]byte, []int) { return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{1} } -type Case struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Point int32 `protobuf:"varint,2,opt,name=point,proto3" json:"point,omitempty"` - Index int32 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"` - IsAuto bool `protobuf:"varint,4,opt,name=is_auto,json=isAuto,proto3" json:"is_auto,omitempty"` -} - -func (x *Case) Reset() { - *x = Case{} - if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Case) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Case) ProtoMessage() {} - -func (x *Case) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Case.ProtoReflect.Descriptor instead. -func (*Case) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{0} -} - -func (x *Case) GetId() int64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Case) GetPoint() int32 { - if x != nil { - return x.Point - } - return 0 -} - -func (x *Case) GetIndex() int32 { - if x != nil { - return x.Index - } - return 0 -} - -func (x *Case) GetIsAuto() bool { - if x != nil { - return x.IsAuto - } - return false -} - type DeleteCasesByProblemIdRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -232,7 +161,7 @@ type DeleteCasesByProblemIdRequest struct { func (x *DeleteCasesByProblemIdRequest) Reset() { *x = DeleteCasesByProblemIdRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[1] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -245,7 +174,7 @@ func (x *DeleteCasesByProblemIdRequest) String() string { func (*DeleteCasesByProblemIdRequest) ProtoMessage() {} func (x *DeleteCasesByProblemIdRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[1] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -258,7 +187,7 @@ func (x *DeleteCasesByProblemIdRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCasesByProblemIdRequest.ProtoReflect.Descriptor instead. func (*DeleteCasesByProblemIdRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{1} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{0} } func (x *DeleteCasesByProblemIdRequest) GetProblemId() int64 { @@ -277,7 +206,7 @@ type DeleteCasesByProblemIdReply struct { func (x *DeleteCasesByProblemIdReply) Reset() { *x = DeleteCasesByProblemIdReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[2] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -290,7 +219,7 @@ func (x *DeleteCasesByProblemIdReply) String() string { func (*DeleteCasesByProblemIdReply) ProtoMessage() {} func (x *DeleteCasesByProblemIdReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[2] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -303,7 +232,7 @@ func (x *DeleteCasesByProblemIdReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCasesByProblemIdReply.ProtoReflect.Descriptor instead. func (*DeleteCasesByProblemIdReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{2} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{1} } type CreateContestRequest struct { @@ -325,7 +254,7 @@ type CreateContestRequest struct { func (x *CreateContestRequest) Reset() { *x = CreateContestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[3] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -338,7 +267,7 @@ func (x *CreateContestRequest) String() string { func (*CreateContestRequest) ProtoMessage() {} func (x *CreateContestRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[3] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -351,7 +280,7 @@ func (x *CreateContestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateContestRequest.ProtoReflect.Descriptor instead. func (*CreateContestRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{3} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{2} } func (x *CreateContestRequest) GetTitle() string { @@ -428,7 +357,7 @@ type CreateContestReply struct { func (x *CreateContestReply) Reset() { *x = CreateContestReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[4] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -441,7 +370,7 @@ func (x *CreateContestReply) String() string { func (*CreateContestReply) ProtoMessage() {} func (x *CreateContestReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[4] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -454,7 +383,7 @@ func (x *CreateContestReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateContestReply.ProtoReflect.Descriptor instead. func (*CreateContestReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{4} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{3} } func (x *CreateContestReply) GetId() int64 { @@ -484,7 +413,7 @@ type UpdateContestRequest struct { func (x *UpdateContestRequest) Reset() { *x = UpdateContestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[5] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -497,7 +426,7 @@ func (x *UpdateContestRequest) String() string { func (*UpdateContestRequest) ProtoMessage() {} func (x *UpdateContestRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[5] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -510,7 +439,7 @@ func (x *UpdateContestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateContestRequest.ProtoReflect.Descriptor instead. func (*UpdateContestRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{5} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{4} } func (x *UpdateContestRequest) GetId() int64 { @@ -594,7 +523,7 @@ type UpdateContestReply struct { func (x *UpdateContestReply) Reset() { *x = UpdateContestReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[6] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -607,7 +536,7 @@ func (x *UpdateContestReply) String() string { func (*UpdateContestReply) ProtoMessage() {} func (x *UpdateContestReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[6] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -620,7 +549,7 @@ func (x *UpdateContestReply) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateContestReply.ProtoReflect.Descriptor instead. func (*UpdateContestReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{6} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{5} } func (x *UpdateContestReply) GetSuccess() bool { @@ -641,7 +570,7 @@ type DeleteContestRequest struct { func (x *DeleteContestRequest) Reset() { *x = DeleteContestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[7] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -654,7 +583,7 @@ func (x *DeleteContestRequest) String() string { func (*DeleteContestRequest) ProtoMessage() {} func (x *DeleteContestRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[7] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -667,7 +596,7 @@ func (x *DeleteContestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteContestRequest.ProtoReflect.Descriptor instead. func (*DeleteContestRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{7} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{6} } func (x *DeleteContestRequest) GetId() int64 { @@ -688,7 +617,7 @@ type DeleteContestReply struct { func (x *DeleteContestReply) Reset() { *x = DeleteContestReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[8] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -701,7 +630,7 @@ func (x *DeleteContestReply) String() string { func (*DeleteContestReply) ProtoMessage() {} func (x *DeleteContestReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[8] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -714,7 +643,7 @@ func (x *DeleteContestReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteContestReply.ProtoReflect.Descriptor instead. func (*DeleteContestReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{8} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{7} } func (x *DeleteContestReply) GetSuccess() bool { @@ -735,7 +664,7 @@ type GetContestRequest struct { func (x *GetContestRequest) Reset() { *x = GetContestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[9] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -748,7 +677,7 @@ func (x *GetContestRequest) String() string { func (*GetContestRequest) ProtoMessage() {} func (x *GetContestRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[9] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -761,7 +690,7 @@ func (x *GetContestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetContestRequest.ProtoReflect.Descriptor instead. func (*GetContestRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{9} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{8} } func (x *GetContestRequest) GetId() int64 { @@ -791,7 +720,7 @@ type GetContestReply struct { func (x *GetContestReply) Reset() { *x = GetContestReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[10] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -804,7 +733,7 @@ func (x *GetContestReply) String() string { func (*GetContestReply) ProtoMessage() {} func (x *GetContestReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[10] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -817,7 +746,7 @@ func (x *GetContestReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetContestReply.ProtoReflect.Descriptor instead. func (*GetContestReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{10} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{9} } func (x *GetContestReply) GetId() int64 { @@ -902,7 +831,7 @@ type ListContestRequest struct { func (x *ListContestRequest) Reset() { *x = ListContestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[11] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -915,7 +844,7 @@ func (x *ListContestRequest) String() string { func (*ListContestRequest) ProtoMessage() {} func (x *ListContestRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[11] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -928,7 +857,7 @@ func (x *ListContestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListContestRequest.ProtoReflect.Descriptor instead. func (*ListContestRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{11} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{10} } func (x *ListContestRequest) GetSize() int64 { @@ -956,7 +885,7 @@ type ListContestReply struct { func (x *ListContestReply) Reset() { *x = ListContestReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[12] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -969,7 +898,7 @@ func (x *ListContestReply) String() string { func (*ListContestReply) ProtoMessage() {} func (x *ListContestReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[12] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +911,7 @@ func (x *ListContestReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListContestReply.ProtoReflect.Descriptor instead. func (*ListContestReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{12} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{11} } func (x *ListContestReply) GetContests() []*ListContestReply_Contest { @@ -1005,7 +934,7 @@ type AddContestantsRequest struct { func (x *AddContestantsRequest) Reset() { *x = AddContestantsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[13] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1018,7 +947,7 @@ func (x *AddContestantsRequest) String() string { func (*AddContestantsRequest) ProtoMessage() {} func (x *AddContestantsRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[13] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1031,7 +960,7 @@ func (x *AddContestantsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddContestantsRequest.ProtoReflect.Descriptor instead. func (*AddContestantsRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{13} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{12} } func (x *AddContestantsRequest) GetGroupId() int64 { @@ -1066,7 +995,7 @@ type AddContestantsReply struct { func (x *AddContestantsReply) Reset() { *x = AddContestantsReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[14] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1079,7 +1008,7 @@ func (x *AddContestantsReply) String() string { func (*AddContestantsReply) ProtoMessage() {} func (x *AddContestantsReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[14] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1092,7 +1021,7 @@ func (x *AddContestantsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddContestantsReply.ProtoReflect.Descriptor instead. func (*AddContestantsReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{14} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{13} } func (x *AddContestantsReply) GetSuccess() bool { @@ -1113,7 +1042,7 @@ type ManualRankingRequest struct { func (x *ManualRankingRequest) Reset() { *x = ManualRankingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[15] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1126,7 +1055,7 @@ func (x *ManualRankingRequest) String() string { func (*ManualRankingRequest) ProtoMessage() {} func (x *ManualRankingRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[15] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1139,7 +1068,7 @@ func (x *ManualRankingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ManualRankingRequest.ProtoReflect.Descriptor instead. func (*ManualRankingRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{15} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{14} } func (x *ManualRankingRequest) GetContestId() int64 { @@ -1160,7 +1089,7 @@ type ManualRankingReply struct { func (x *ManualRankingReply) Reset() { *x = ManualRankingReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[16] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1173,7 +1102,7 @@ func (x *ManualRankingReply) String() string { func (*ManualRankingReply) ProtoMessage() {} func (x *ManualRankingReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[16] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1186,7 +1115,7 @@ func (x *ManualRankingReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ManualRankingReply.ProtoReflect.Descriptor instead. func (*ManualRankingReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{16} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{15} } func (x *ManualRankingReply) GetSuccess() bool { @@ -1207,7 +1136,7 @@ type GetRankingRequest struct { func (x *GetRankingRequest) Reset() { *x = GetRankingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[17] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1220,7 +1149,7 @@ func (x *GetRankingRequest) String() string { func (*GetRankingRequest) ProtoMessage() {} func (x *GetRankingRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[17] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1233,7 +1162,7 @@ func (x *GetRankingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRankingRequest.ProtoReflect.Descriptor instead. func (*GetRankingRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{17} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{16} } func (x *GetRankingRequest) GetContestId() int64 { @@ -1254,7 +1183,7 @@ type GetRankingReply struct { func (x *GetRankingReply) Reset() { *x = GetRankingReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[18] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1267,7 +1196,7 @@ func (x *GetRankingReply) String() string { func (*GetRankingReply) ProtoMessage() {} func (x *GetRankingReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[18] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1280,7 +1209,7 @@ func (x *GetRankingReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRankingReply.ProtoReflect.Descriptor instead. func (*GetRankingReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{18} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{17} } func (x *GetRankingReply) GetUsers() []*GetRankingReply_UserResult { @@ -1305,7 +1234,7 @@ type CreateGroupRequest struct { func (x *CreateGroupRequest) Reset() { *x = CreateGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[19] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1318,7 +1247,7 @@ func (x *CreateGroupRequest) String() string { func (*CreateGroupRequest) ProtoMessage() {} func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[19] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1331,7 +1260,7 @@ func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead. func (*CreateGroupRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{19} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{18} } func (x *CreateGroupRequest) GetName() string { @@ -1380,7 +1309,7 @@ type CreateGroupReply struct { func (x *CreateGroupReply) Reset() { *x = CreateGroupReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[20] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1393,7 +1322,7 @@ func (x *CreateGroupReply) String() string { func (*CreateGroupReply) ProtoMessage() {} func (x *CreateGroupReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[20] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1406,7 +1335,7 @@ func (x *CreateGroupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupReply.ProtoReflect.Descriptor instead. func (*CreateGroupReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{20} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{19} } func (x *CreateGroupReply) GetId() int64 { @@ -1432,7 +1361,7 @@ type UpdateGroupRequest struct { func (x *UpdateGroupRequest) Reset() { *x = UpdateGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[21] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1445,7 +1374,7 @@ func (x *UpdateGroupRequest) String() string { func (*UpdateGroupRequest) ProtoMessage() {} func (x *UpdateGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[21] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1458,7 +1387,7 @@ func (x *UpdateGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupRequest.ProtoReflect.Descriptor instead. func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{21} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{20} } func (x *UpdateGroupRequest) GetId() int64 { @@ -1514,7 +1443,7 @@ type UpdateGroupReply struct { func (x *UpdateGroupReply) Reset() { *x = UpdateGroupReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[22] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1527,7 +1456,7 @@ func (x *UpdateGroupReply) String() string { func (*UpdateGroupReply) ProtoMessage() {} func (x *UpdateGroupReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[22] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1540,7 +1469,7 @@ func (x *UpdateGroupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupReply.ProtoReflect.Descriptor instead. func (*UpdateGroupReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{22} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{21} } func (x *UpdateGroupReply) GetSuccess() bool { @@ -1561,7 +1490,7 @@ type DeleteGroupRequest struct { func (x *DeleteGroupRequest) Reset() { *x = DeleteGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[23] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1574,7 +1503,7 @@ func (x *DeleteGroupRequest) String() string { func (*DeleteGroupRequest) ProtoMessage() {} func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[23] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1587,7 +1516,7 @@ func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead. func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{23} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{22} } func (x *DeleteGroupRequest) GetId() int64 { @@ -1608,7 +1537,7 @@ type DeleteGroupReply struct { func (x *DeleteGroupReply) Reset() { *x = DeleteGroupReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[24] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1621,7 +1550,7 @@ func (x *DeleteGroupReply) String() string { func (*DeleteGroupReply) ProtoMessage() {} func (x *DeleteGroupReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[24] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1634,7 +1563,7 @@ func (x *DeleteGroupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupReply.ProtoReflect.Descriptor instead. func (*DeleteGroupReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{24} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{23} } func (x *DeleteGroupReply) GetSuccess() bool { @@ -1655,7 +1584,7 @@ type GetGroupRequest struct { func (x *GetGroupRequest) Reset() { *x = GetGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[25] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1668,7 +1597,7 @@ func (x *GetGroupRequest) String() string { func (*GetGroupRequest) ProtoMessage() {} func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[25] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1681,7 +1610,7 @@ func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupRequest.ProtoReflect.Descriptor instead. func (*GetGroupRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{25} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{24} } func (x *GetGroupRequest) GetId() int64 { @@ -1707,7 +1636,7 @@ type GetGroupReply struct { func (x *GetGroupReply) Reset() { *x = GetGroupReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[26] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1720,7 +1649,7 @@ func (x *GetGroupReply) String() string { func (*GetGroupReply) ProtoMessage() {} func (x *GetGroupReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[26] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1733,7 +1662,7 @@ func (x *GetGroupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupReply.ProtoReflect.Descriptor instead. func (*GetGroupReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{26} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{25} } func (x *GetGroupReply) GetId() int64 { @@ -1790,7 +1719,7 @@ type ListGroupRequest struct { func (x *ListGroupRequest) Reset() { *x = ListGroupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[27] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1803,7 +1732,7 @@ func (x *ListGroupRequest) String() string { func (*ListGroupRequest) ProtoMessage() {} func (x *ListGroupRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[27] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1816,7 +1745,7 @@ func (x *ListGroupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupRequest.ProtoReflect.Descriptor instead. func (*ListGroupRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{27} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{26} } func (x *ListGroupRequest) GetSize() int64 { @@ -1844,7 +1773,7 @@ type ListGroupReply struct { func (x *ListGroupReply) Reset() { *x = ListGroupReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[28] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1857,7 +1786,7 @@ func (x *ListGroupReply) String() string { func (*ListGroupReply) ProtoMessage() {} func (x *ListGroupReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[28] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1870,7 +1799,7 @@ func (x *ListGroupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReply.ProtoReflect.Descriptor instead. func (*ListGroupReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{28} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{27} } func (x *ListGroupReply) GetGroups() []*ListGroupReply_Group { @@ -1888,17 +1817,16 @@ type Problem struct { Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` - Point int32 `protobuf:"varint,4,opt,name=point,proto3" json:"point,omitempty"` + Score int32 `protobuf:"varint,4,opt,name=score,proto3" json:"score,omitempty"` ContestId int64 `protobuf:"varint,5,opt,name=contest_id,json=contestId,proto3" json:"contest_id,omitempty"` CaseVersion int32 `protobuf:"varint,6,opt,name=case_version,json=caseVersion,proto3" json:"case_version,omitempty"` Index int32 `protobuf:"varint,7,opt,name=index,proto3" json:"index,omitempty"` - Config string `protobuf:"bytes,8,opt,name=config,proto3" json:"config,omitempty"` } func (x *Problem) Reset() { *x = Problem{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[29] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1911,7 +1839,7 @@ func (x *Problem) String() string { func (*Problem) ProtoMessage() {} func (x *Problem) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[29] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1924,7 +1852,7 @@ func (x *Problem) ProtoReflect() protoreflect.Message { // Deprecated: Use Problem.ProtoReflect.Descriptor instead. func (*Problem) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{29} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{28} } func (x *Problem) GetId() int64 { @@ -1948,9 +1876,9 @@ func (x *Problem) GetContent() string { return "" } -func (x *Problem) GetPoint() int32 { +func (x *Problem) GetScore() int32 { if x != nil { - return x.Point + return x.Score } return 0 } @@ -1976,13 +1904,6 @@ func (x *Problem) GetIndex() int32 { return 0 } -func (x *Problem) GetConfig() string { - if x != nil { - return x.Config - } - return "" -} - type Submission struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1998,7 +1919,7 @@ type Submission struct { func (x *Submission) Reset() { *x = Submission{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[30] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2011,7 +1932,7 @@ func (x *Submission) String() string { func (*Submission) ProtoMessage() {} func (x *Submission) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[30] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2024,7 +1945,7 @@ func (x *Submission) ProtoReflect() protoreflect.Message { // Deprecated: Use Submission.ProtoReflect.Descriptor instead. func (*Submission) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{30} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{29} } func (x *Submission) GetId() int64 { @@ -2074,7 +1995,7 @@ type SubmitJudgeRequest struct { func (x *SubmitJudgeRequest) Reset() { *x = SubmitJudgeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[31] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2087,7 +2008,7 @@ func (x *SubmitJudgeRequest) String() string { func (*SubmitJudgeRequest) ProtoMessage() {} func (x *SubmitJudgeRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[31] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2100,7 +2021,7 @@ func (x *SubmitJudgeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitJudgeRequest.ProtoReflect.Descriptor instead. func (*SubmitJudgeRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{31} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{30} } func (x *SubmitJudgeRequest) GetSubmissionId() int64 { @@ -2126,7 +2047,7 @@ type SubmitJudgeReply struct { func (x *SubmitJudgeReply) Reset() { *x = SubmitJudgeReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[32] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2139,7 +2060,7 @@ func (x *SubmitJudgeReply) String() string { func (*SubmitJudgeReply) ProtoMessage() {} func (x *SubmitJudgeReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[32] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2152,7 +2073,7 @@ func (x *SubmitJudgeReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitJudgeReply.ProtoReflect.Descriptor instead. func (*SubmitJudgeReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{32} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{31} } type GetJudgableProblemsRequest struct { @@ -2164,7 +2085,7 @@ type GetJudgableProblemsRequest struct { func (x *GetJudgableProblemsRequest) Reset() { *x = GetJudgableProblemsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[33] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2177,7 +2098,7 @@ func (x *GetJudgableProblemsRequest) String() string { func (*GetJudgableProblemsRequest) ProtoMessage() {} func (x *GetJudgableProblemsRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[33] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2190,7 +2111,7 @@ func (x *GetJudgableProblemsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetJudgableProblemsRequest.ProtoReflect.Descriptor instead. func (*GetJudgableProblemsRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{33} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{32} } type GetJudgableProblemsReply struct { @@ -2204,7 +2125,7 @@ type GetJudgableProblemsReply struct { func (x *GetJudgableProblemsReply) Reset() { *x = GetJudgableProblemsReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[34] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2217,7 +2138,7 @@ func (x *GetJudgableProblemsReply) String() string { func (*GetJudgableProblemsReply) ProtoMessage() {} func (x *GetJudgableProblemsReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[34] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2230,7 +2151,7 @@ func (x *GetJudgableProblemsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetJudgableProblemsReply.ProtoReflect.Descriptor instead. func (*GetJudgableProblemsReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{34} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{33} } func (x *GetJudgableProblemsReply) GetResults() []*Problem { @@ -2252,7 +2173,7 @@ type GetSubmissionsRequest struct { func (x *GetSubmissionsRequest) Reset() { *x = GetSubmissionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[35] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2265,7 +2186,7 @@ func (x *GetSubmissionsRequest) String() string { func (*GetSubmissionsRequest) ProtoMessage() {} func (x *GetSubmissionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[35] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2278,7 +2199,7 @@ func (x *GetSubmissionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubmissionsRequest.ProtoReflect.Descriptor instead. func (*GetSubmissionsRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{35} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{34} } func (x *GetSubmissionsRequest) GetProblemId() int64 { @@ -2306,7 +2227,7 @@ type GetSubmissionsReply struct { func (x *GetSubmissionsReply) Reset() { *x = GetSubmissionsReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[36] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2319,7 +2240,7 @@ func (x *GetSubmissionsReply) String() string { func (*GetSubmissionsReply) ProtoMessage() {} func (x *GetSubmissionsReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[36] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2332,7 +2253,7 @@ func (x *GetSubmissionsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubmissionsReply.ProtoReflect.Descriptor instead. func (*GetSubmissionsReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{36} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{35} } func (x *GetSubmissionsReply) GetSubmissions() []*Submission { @@ -2350,18 +2271,18 @@ type CreateProblemRequest struct { TypeId int64 `protobuf:"varint,1,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` Content string `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` - Point int32 `protobuf:"varint,4,opt,name=point,proto3" json:"point,omitempty"` - ContestId int64 `protobuf:"varint,5,opt,name=contestId,proto3" json:"contestId,omitempty"` + Score int32 `protobuf:"varint,4,opt,name=score,proto3" json:"score,omitempty"` + ContestId int64 `protobuf:"varint,5,opt,name=contest_id,json=contestId,proto3" json:"contest_id,omitempty"` Index int32 `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"` Config string `protobuf:"bytes,7,opt,name=config,proto3" json:"config,omitempty"` - OwnerId int64 `protobuf:"varint,8,opt,name=ownerId,proto3" json:"ownerId,omitempty"` + OwnerId int64 `protobuf:"varint,8,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` Visibility Visibility `protobuf:"varint,9,opt,name=visibility,proto3,enum=api.sastoj.admin.admin.service.v1.Visibility" json:"visibility,omitempty"` } func (x *CreateProblemRequest) Reset() { *x = CreateProblemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[37] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2374,7 +2295,7 @@ func (x *CreateProblemRequest) String() string { func (*CreateProblemRequest) ProtoMessage() {} func (x *CreateProblemRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[37] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2387,7 +2308,7 @@ func (x *CreateProblemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProblemRequest.ProtoReflect.Descriptor instead. func (*CreateProblemRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{37} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{36} } func (x *CreateProblemRequest) GetTypeId() int64 { @@ -2411,9 +2332,9 @@ func (x *CreateProblemRequest) GetContent() string { return "" } -func (x *CreateProblemRequest) GetPoint() int32 { +func (x *CreateProblemRequest) GetScore() int32 { if x != nil { - return x.Point + return x.Score } return 0 } @@ -2464,7 +2385,7 @@ type CreateProblemReply struct { func (x *CreateProblemReply) Reset() { *x = CreateProblemReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[38] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2477,7 +2398,7 @@ func (x *CreateProblemReply) String() string { func (*CreateProblemReply) ProtoMessage() {} func (x *CreateProblemReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[38] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,7 +2411,7 @@ func (x *CreateProblemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProblemReply.ProtoReflect.Descriptor instead. func (*CreateProblemReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{38} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{37} } func (x *CreateProblemReply) GetId() int64 { @@ -2509,19 +2430,17 @@ type UpdateProblemRequest struct { TypeId int64 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Point int32 `protobuf:"varint,5,opt,name=point,proto3" json:"point,omitempty"` - ContestId int64 `protobuf:"varint,6,opt,name=contestId,proto3" json:"contestId,omitempty"` - CaseVersion int32 `protobuf:"varint,7,opt,name=caseVersion,proto3" json:"caseVersion,omitempty"` + Score int32 `protobuf:"varint,5,opt,name=score,proto3" json:"score,omitempty"` + ContestId int64 `protobuf:"varint,6,opt,name=contest_id,json=contestId,proto3" json:"contest_id,omitempty"` + CaseVersion int32 `protobuf:"varint,7,opt,name=case_version,json=caseVersion,proto3" json:"case_version,omitempty"` Index int32 `protobuf:"varint,8,opt,name=index,proto3" json:"index,omitempty"` - Config string `protobuf:"bytes,9,opt,name=config,proto3" json:"config,omitempty"` - OwnerId int64 `protobuf:"varint,10,opt,name=ownerId,proto3" json:"ownerId,omitempty"` - Visibility Visibility `protobuf:"varint,11,opt,name=visibility,proto3,enum=api.sastoj.admin.admin.service.v1.Visibility" json:"visibility,omitempty"` + Visibility Visibility `protobuf:"varint,9,opt,name=visibility,proto3,enum=api.sastoj.admin.admin.service.v1.Visibility" json:"visibility,omitempty"` } func (x *UpdateProblemRequest) Reset() { *x = UpdateProblemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[39] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2534,7 +2453,7 @@ func (x *UpdateProblemRequest) String() string { func (*UpdateProblemRequest) ProtoMessage() {} func (x *UpdateProblemRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[39] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2547,7 +2466,7 @@ func (x *UpdateProblemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProblemRequest.ProtoReflect.Descriptor instead. func (*UpdateProblemRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{39} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{38} } func (x *UpdateProblemRequest) GetId() int64 { @@ -2578,9 +2497,9 @@ func (x *UpdateProblemRequest) GetContent() string { return "" } -func (x *UpdateProblemRequest) GetPoint() int32 { +func (x *UpdateProblemRequest) GetScore() int32 { if x != nil { - return x.Point + return x.Score } return 0 } @@ -2606,20 +2525,6 @@ func (x *UpdateProblemRequest) GetIndex() int32 { return 0 } -func (x *UpdateProblemRequest) GetConfig() string { - if x != nil { - return x.Config - } - return "" -} - -func (x *UpdateProblemRequest) GetOwnerId() int64 { - if x != nil { - return x.OwnerId - } - return 0 -} - func (x *UpdateProblemRequest) GetVisibility() Visibility { if x != nil { return x.Visibility @@ -2638,7 +2543,7 @@ type UpdateProblemReply struct { func (x *UpdateProblemReply) Reset() { *x = UpdateProblemReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[40] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2651,7 +2556,7 @@ func (x *UpdateProblemReply) String() string { func (*UpdateProblemReply) ProtoMessage() {} func (x *UpdateProblemReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[40] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2664,7 +2569,7 @@ func (x *UpdateProblemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProblemReply.ProtoReflect.Descriptor instead. func (*UpdateProblemReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{40} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{39} } func (x *UpdateProblemReply) GetSuccess() bool { @@ -2685,7 +2590,7 @@ type DeleteProblemRequest struct { func (x *DeleteProblemRequest) Reset() { *x = DeleteProblemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[41] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2698,7 +2603,7 @@ func (x *DeleteProblemRequest) String() string { func (*DeleteProblemRequest) ProtoMessage() {} func (x *DeleteProblemRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[41] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2711,7 +2616,7 @@ func (x *DeleteProblemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProblemRequest.ProtoReflect.Descriptor instead. func (*DeleteProblemRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{41} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{40} } func (x *DeleteProblemRequest) GetId() int64 { @@ -2732,7 +2637,7 @@ type DeleteProblemReply struct { func (x *DeleteProblemReply) Reset() { *x = DeleteProblemReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[42] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2745,7 +2650,7 @@ func (x *DeleteProblemReply) String() string { func (*DeleteProblemReply) ProtoMessage() {} func (x *DeleteProblemReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[42] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2758,7 +2663,7 @@ func (x *DeleteProblemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProblemReply.ProtoReflect.Descriptor instead. func (*DeleteProblemReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{42} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{41} } func (x *DeleteProblemReply) GetSuccess() bool { @@ -2779,7 +2684,7 @@ type GetProblemRequest struct { func (x *GetProblemRequest) Reset() { *x = GetProblemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[43] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2792,7 +2697,7 @@ func (x *GetProblemRequest) String() string { func (*GetProblemRequest) ProtoMessage() {} func (x *GetProblemRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[43] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2805,7 +2710,7 @@ func (x *GetProblemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProblemRequest.ProtoReflect.Descriptor instead. func (*GetProblemRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{43} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{42} } func (x *GetProblemRequest) GetId() int64 { @@ -2824,19 +2729,19 @@ type GetProblemReply struct { TypeId int64 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Point int32 `protobuf:"varint,5,opt,name=point,proto3" json:"point,omitempty"` - ContestId int64 `protobuf:"varint,6,opt,name=contestId,proto3" json:"contestId,omitempty"` - CaseVersion int32 `protobuf:"varint,7,opt,name=caseVersion,proto3" json:"caseVersion,omitempty"` + Score int32 `protobuf:"varint,5,opt,name=score,proto3" json:"score,omitempty"` + ContestId int64 `protobuf:"varint,6,opt,name=contest_id,json=contestId,proto3" json:"contest_id,omitempty"` + CaseVersion int32 `protobuf:"varint,7,opt,name=case_version,json=caseVersion,proto3" json:"case_version,omitempty"` Index int32 `protobuf:"varint,8,opt,name=index,proto3" json:"index,omitempty"` Config string `protobuf:"bytes,9,opt,name=config,proto3" json:"config,omitempty"` - OwnerId int64 `protobuf:"varint,10,opt,name=ownerId,proto3" json:"ownerId,omitempty"` + OwnerId int64 `protobuf:"varint,10,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` Visibility Visibility `protobuf:"varint,11,opt,name=visibility,proto3,enum=api.sastoj.admin.admin.service.v1.Visibility" json:"visibility,omitempty"` } func (x *GetProblemReply) Reset() { *x = GetProblemReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[44] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2849,7 +2754,7 @@ func (x *GetProblemReply) String() string { func (*GetProblemReply) ProtoMessage() {} func (x *GetProblemReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[44] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2862,7 +2767,7 @@ func (x *GetProblemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProblemReply.ProtoReflect.Descriptor instead. func (*GetProblemReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{44} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{43} } func (x *GetProblemReply) GetId() int64 { @@ -2893,9 +2798,9 @@ func (x *GetProblemReply) GetContent() string { return "" } -func (x *GetProblemReply) GetPoint() int32 { +func (x *GetProblemReply) GetScore() int32 { if x != nil { - return x.Point + return x.Score } return 0 } @@ -2954,7 +2859,7 @@ type ListProblemRequest struct { func (x *ListProblemRequest) Reset() { *x = ListProblemRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[45] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2967,7 +2872,7 @@ func (x *ListProblemRequest) String() string { func (*ListProblemRequest) ProtoMessage() {} func (x *ListProblemRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[45] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2980,7 +2885,7 @@ func (x *ListProblemRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProblemRequest.ProtoReflect.Descriptor instead. func (*ListProblemRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{45} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{44} } func (x *ListProblemRequest) GetSize() int32 { @@ -3010,7 +2915,7 @@ type ListProblemReply struct { func (x *ListProblemReply) Reset() { *x = ListProblemReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[46] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3023,7 +2928,7 @@ func (x *ListProblemReply) String() string { func (*ListProblemReply) ProtoMessage() {} func (x *ListProblemReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[46] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3036,7 +2941,7 @@ func (x *ListProblemReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProblemReply.ProtoReflect.Descriptor instead. func (*ListProblemReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{46} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{45} } func (x *ListProblemReply) GetCurrency() int32 { @@ -3069,7 +2974,7 @@ type GetProblemTypesRequest struct { func (x *GetProblemTypesRequest) Reset() { *x = GetProblemTypesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[47] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3082,7 +2987,7 @@ func (x *GetProblemTypesRequest) String() string { func (*GetProblemTypesRequest) ProtoMessage() {} func (x *GetProblemTypesRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[47] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3095,7 +3000,7 @@ func (x *GetProblemTypesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProblemTypesRequest.ProtoReflect.Descriptor instead. func (*GetProblemTypesRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{47} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{46} } type GetProblemTypesReply struct { @@ -3109,7 +3014,7 @@ type GetProblemTypesReply struct { func (x *GetProblemTypesReply) Reset() { *x = GetProblemTypesReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[48] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3122,7 +3027,7 @@ func (x *GetProblemTypesReply) String() string { func (*GetProblemTypesReply) ProtoMessage() {} func (x *GetProblemTypesReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[48] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3135,7 +3040,7 @@ func (x *GetProblemTypesReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProblemTypesReply.ProtoReflect.Descriptor instead. func (*GetProblemTypesReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{48} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{47} } func (x *GetProblemTypesReply) GetTypes() []*GetProblemTypesReply_ProblemType { @@ -3157,7 +3062,7 @@ type UpdateAdjudicatorRequest struct { func (x *UpdateAdjudicatorRequest) Reset() { *x = UpdateAdjudicatorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[49] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3170,7 +3075,7 @@ func (x *UpdateAdjudicatorRequest) String() string { func (*UpdateAdjudicatorRequest) ProtoMessage() {} func (x *UpdateAdjudicatorRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[49] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3183,7 +3088,7 @@ func (x *UpdateAdjudicatorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAdjudicatorRequest.ProtoReflect.Descriptor instead. func (*UpdateAdjudicatorRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{49} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{48} } func (x *UpdateAdjudicatorRequest) GetProblemId() int64 { @@ -3211,7 +3116,7 @@ type UpdateAdjudicatorReply struct { func (x *UpdateAdjudicatorReply) Reset() { *x = UpdateAdjudicatorReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[50] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3224,7 +3129,7 @@ func (x *UpdateAdjudicatorReply) String() string { func (*UpdateAdjudicatorReply) ProtoMessage() {} func (x *UpdateAdjudicatorReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[50] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3237,7 +3142,7 @@ func (x *UpdateAdjudicatorReply) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAdjudicatorReply.ProtoReflect.Descriptor instead. func (*UpdateAdjudicatorReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{50} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{49} } func (x *UpdateAdjudicatorReply) GetSuccess() bool { @@ -3258,7 +3163,7 @@ type GetAdjudicatorRequest struct { func (x *GetAdjudicatorRequest) Reset() { *x = GetAdjudicatorRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[51] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3271,7 +3176,7 @@ func (x *GetAdjudicatorRequest) String() string { func (*GetAdjudicatorRequest) ProtoMessage() {} func (x *GetAdjudicatorRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[51] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3284,7 +3189,7 @@ func (x *GetAdjudicatorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAdjudicatorRequest.ProtoReflect.Descriptor instead. func (*GetAdjudicatorRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{51} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{50} } func (x *GetAdjudicatorRequest) GetProblemId() int64 { @@ -3305,7 +3210,7 @@ type GetAdjudicatorReply struct { func (x *GetAdjudicatorReply) Reset() { *x = GetAdjudicatorReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[52] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3318,7 +3223,7 @@ func (x *GetAdjudicatorReply) String() string { func (*GetAdjudicatorReply) ProtoMessage() {} func (x *GetAdjudicatorReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[52] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3331,7 +3236,7 @@ func (x *GetAdjudicatorReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAdjudicatorReply.ProtoReflect.Descriptor instead. func (*GetAdjudicatorReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{52} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{51} } func (x *GetAdjudicatorReply) GetGroups() []*GetAdjudicatorReply_Group { @@ -3354,7 +3259,7 @@ type CreateUserRequest struct { func (x *CreateUserRequest) Reset() { *x = CreateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[53] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3367,7 +3272,7 @@ func (x *CreateUserRequest) String() string { func (*CreateUserRequest) ProtoMessage() {} func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[53] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3380,7 +3285,7 @@ func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserRequest.ProtoReflect.Descriptor instead. func (*CreateUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{53} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{52} } func (x *CreateUserRequest) GetUsername() string { @@ -3415,7 +3320,7 @@ type CreateUserReply struct { func (x *CreateUserReply) Reset() { *x = CreateUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[54] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3428,7 +3333,7 @@ func (x *CreateUserReply) String() string { func (*CreateUserReply) ProtoMessage() {} func (x *CreateUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[54] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3441,7 +3346,7 @@ func (x *CreateUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserReply.ProtoReflect.Descriptor instead. func (*CreateUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{54} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{53} } func (x *CreateUserReply) GetId() int64 { @@ -3463,7 +3368,7 @@ type BatchCreateUserRequest struct { func (x *BatchCreateUserRequest) Reset() { *x = BatchCreateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[55] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3381,7 @@ func (x *BatchCreateUserRequest) String() string { func (*BatchCreateUserRequest) ProtoMessage() {} func (x *BatchCreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[55] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3394,7 @@ func (x *BatchCreateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchCreateUserRequest.ProtoReflect.Descriptor instead. func (*BatchCreateUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{55} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{54} } func (x *BatchCreateUserRequest) GetGroupIds() []int64 { @@ -3517,7 +3422,7 @@ type BatchCreateUserReply struct { func (x *BatchCreateUserReply) Reset() { *x = BatchCreateUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[56] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3530,7 +3435,7 @@ func (x *BatchCreateUserReply) String() string { func (*BatchCreateUserReply) ProtoMessage() {} func (x *BatchCreateUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[56] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3543,7 +3448,7 @@ func (x *BatchCreateUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchCreateUserReply.ProtoReflect.Descriptor instead. func (*BatchCreateUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{56} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{55} } func (x *BatchCreateUserReply) GetUsers() []*BatchCreateUserReply_User { @@ -3568,7 +3473,7 @@ type UpdateUserRequest struct { func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[57] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3581,7 +3486,7 @@ func (x *UpdateUserRequest) String() string { func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[57] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3594,7 +3499,7 @@ func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. func (*UpdateUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{57} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{56} } func (x *UpdateUserRequest) GetId() int64 { @@ -3643,7 +3548,7 @@ type UpdateUserReply struct { func (x *UpdateUserReply) Reset() { *x = UpdateUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[58] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3656,7 +3561,7 @@ func (x *UpdateUserReply) String() string { func (*UpdateUserReply) ProtoMessage() {} func (x *UpdateUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[58] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3669,7 +3574,7 @@ func (x *UpdateUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserReply.ProtoReflect.Descriptor instead. func (*UpdateUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{58} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{57} } func (x *UpdateUserReply) GetSuccess() bool { @@ -3690,7 +3595,7 @@ type DeleteUserRequest struct { func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[59] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3703,7 +3608,7 @@ func (x *DeleteUserRequest) String() string { func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[59] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3716,7 +3621,7 @@ func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{59} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{58} } func (x *DeleteUserRequest) GetId() int64 { @@ -3737,7 +3642,7 @@ type DeleteUserReply struct { func (x *DeleteUserReply) Reset() { *x = DeleteUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[60] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3750,7 +3655,7 @@ func (x *DeleteUserReply) String() string { func (*DeleteUserReply) ProtoMessage() {} func (x *DeleteUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[60] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3763,7 +3668,7 @@ func (x *DeleteUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserReply.ProtoReflect.Descriptor instead. func (*DeleteUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{60} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{59} } func (x *DeleteUserReply) GetSuccess() bool { @@ -3784,7 +3689,7 @@ type GetUserRequest struct { func (x *GetUserRequest) Reset() { *x = GetUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[61] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3797,7 +3702,7 @@ func (x *GetUserRequest) String() string { func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[61] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3810,7 +3715,7 @@ func (x *GetUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. func (*GetUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{61} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{60} } func (x *GetUserRequest) GetId() int64 { @@ -3834,7 +3739,7 @@ type GetUserReply struct { func (x *GetUserReply) Reset() { *x = GetUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[62] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3847,7 +3752,7 @@ func (x *GetUserReply) String() string { func (*GetUserReply) ProtoMessage() {} func (x *GetUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[62] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3860,7 +3765,7 @@ func (x *GetUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserReply.ProtoReflect.Descriptor instead. func (*GetUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{62} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{61} } func (x *GetUserReply) GetId() int64 { @@ -3903,7 +3808,7 @@ type ListUserRequest struct { func (x *ListUserRequest) Reset() { *x = ListUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[63] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3916,7 +3821,7 @@ func (x *ListUserRequest) String() string { func (*ListUserRequest) ProtoMessage() {} func (x *ListUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[63] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3929,7 +3834,7 @@ func (x *ListUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUserRequest.ProtoReflect.Descriptor instead. func (*ListUserRequest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{63} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{62} } func (x *ListUserRequest) GetSize() int64 { @@ -3957,7 +3862,7 @@ type ListUserReply struct { func (x *ListUserReply) Reset() { *x = ListUserReply{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[64] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3970,7 +3875,7 @@ func (x *ListUserReply) String() string { func (*ListUserReply) ProtoMessage() {} func (x *ListUserReply) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[64] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3983,7 +3888,7 @@ func (x *ListUserReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUserReply.ProtoReflect.Descriptor instead. func (*ListUserReply) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{64} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{63} } func (x *ListUserReply) GetUsers() []*ListUserReply_User { @@ -4013,7 +3918,7 @@ type ListContestReply_Contest struct { func (x *ListContestReply_Contest) Reset() { *x = ListContestReply_Contest{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[65] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4026,7 +3931,7 @@ func (x *ListContestReply_Contest) String() string { func (*ListContestReply_Contest) ProtoMessage() {} func (x *ListContestReply_Contest) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[65] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4039,7 +3944,7 @@ func (x *ListContestReply_Contest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListContestReply_Contest.ProtoReflect.Descriptor instead. func (*ListContestReply_Contest) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{12, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{11, 0} } func (x *ListContestReply_Contest) GetId() int64 { @@ -4127,7 +4032,7 @@ type GetRankingReply_UserResult struct { func (x *GetRankingReply_UserResult) Reset() { *x = GetRankingReply_UserResult{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[66] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4140,7 +4045,7 @@ func (x *GetRankingReply_UserResult) String() string { func (*GetRankingReply_UserResult) ProtoMessage() {} func (x *GetRankingReply_UserResult) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[66] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4153,7 +4058,7 @@ func (x *GetRankingReply_UserResult) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRankingReply_UserResult.ProtoReflect.Descriptor instead. func (*GetRankingReply_UserResult) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{18, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{17, 0} } func (x *GetRankingReply_UserResult) GetProblems() []*GetRankingReply_UserResult_ProblemResult { @@ -4206,7 +4111,7 @@ type GetRankingReply_UserResult_ProblemResult struct { func (x *GetRankingReply_UserResult_ProblemResult) Reset() { *x = GetRankingReply_UserResult_ProblemResult{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[67] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4219,7 +4124,7 @@ func (x *GetRankingReply_UserResult_ProblemResult) String() string { func (*GetRankingReply_UserResult_ProblemResult) ProtoMessage() {} func (x *GetRankingReply_UserResult_ProblemResult) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[67] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4232,7 +4137,7 @@ func (x *GetRankingReply_UserResult_ProblemResult) ProtoReflect() protoreflect.M // Deprecated: Use GetRankingReply_UserResult_ProblemResult.ProtoReflect.Descriptor instead. func (*GetRankingReply_UserResult_ProblemResult) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{18, 0, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{17, 0, 0} } func (x *GetRankingReply_UserResult_ProblemResult) GetProblemId() int64 { @@ -4286,7 +4191,7 @@ type ListGroupReply_Group struct { func (x *ListGroupReply_Group) Reset() { *x = ListGroupReply_Group{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[68] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4299,7 +4204,7 @@ func (x *ListGroupReply_Group) String() string { func (*ListGroupReply_Group) ProtoMessage() {} func (x *ListGroupReply_Group) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[68] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4312,7 +4217,7 @@ func (x *ListGroupReply_Group) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReply_Group.ProtoReflect.Descriptor instead. func (*ListGroupReply_Group) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{28, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{27, 0} } func (x *ListGroupReply_Group) GetId() int64 { @@ -4366,19 +4271,18 @@ type ListProblemReply_Problem struct { TypeId int64 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"` - Point int32 `protobuf:"varint,5,opt,name=point,proto3" json:"point,omitempty"` - ContestId int64 `protobuf:"varint,6,opt,name=contestId,proto3" json:"contestId,omitempty"` - CaseVersion int32 `protobuf:"varint,7,opt,name=caseVersion,proto3" json:"caseVersion,omitempty"` + Score int32 `protobuf:"varint,5,opt,name=score,proto3" json:"score,omitempty"` + ContestId int64 `protobuf:"varint,6,opt,name=contest_id,json=contestId,proto3" json:"contest_id,omitempty"` + CaseVersion int32 `protobuf:"varint,7,opt,name=case_version,json=caseVersion,proto3" json:"case_version,omitempty"` Index int32 `protobuf:"varint,8,opt,name=index,proto3" json:"index,omitempty"` - Config string `protobuf:"bytes,9,opt,name=config,proto3" json:"config,omitempty"` - OwnerId int64 `protobuf:"varint,10,opt,name=ownerId,proto3" json:"ownerId,omitempty"` + OwnerId int64 `protobuf:"varint,10,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` Visibility Visibility `protobuf:"varint,11,opt,name=visibility,proto3,enum=api.sastoj.admin.admin.service.v1.Visibility" json:"visibility,omitempty"` } func (x *ListProblemReply_Problem) Reset() { *x = ListProblemReply_Problem{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[69] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4391,7 +4295,7 @@ func (x *ListProblemReply_Problem) String() string { func (*ListProblemReply_Problem) ProtoMessage() {} func (x *ListProblemReply_Problem) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[69] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4404,7 +4308,7 @@ func (x *ListProblemReply_Problem) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProblemReply_Problem.ProtoReflect.Descriptor instead. func (*ListProblemReply_Problem) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{46, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{45, 0} } func (x *ListProblemReply_Problem) GetId() int64 { @@ -4435,9 +4339,9 @@ func (x *ListProblemReply_Problem) GetContent() string { return "" } -func (x *ListProblemReply_Problem) GetPoint() int32 { +func (x *ListProblemReply_Problem) GetScore() int32 { if x != nil { - return x.Point + return x.Score } return 0 } @@ -4463,13 +4367,6 @@ func (x *ListProblemReply_Problem) GetIndex() int32 { return 0 } -func (x *ListProblemReply_Problem) GetConfig() string { - if x != nil { - return x.Config - } - return "" -} - func (x *ListProblemReply_Problem) GetOwnerId() int64 { if x != nil { return x.OwnerId @@ -4499,7 +4396,7 @@ type GetProblemTypesReply_ProblemType struct { func (x *GetProblemTypesReply_ProblemType) Reset() { *x = GetProblemTypesReply_ProblemType{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[70] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4512,7 +4409,7 @@ func (x *GetProblemTypesReply_ProblemType) String() string { func (*GetProblemTypesReply_ProblemType) ProtoMessage() {} func (x *GetProblemTypesReply_ProblemType) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[70] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4525,7 +4422,7 @@ func (x *GetProblemTypesReply_ProblemType) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProblemTypesReply_ProblemType.ProtoReflect.Descriptor instead. func (*GetProblemTypesReply_ProblemType) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{48, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{47, 0} } func (x *GetProblemTypesReply_ProblemType) GetId() int64 { @@ -4575,7 +4472,7 @@ type GetAdjudicatorReply_Group struct { func (x *GetAdjudicatorReply_Group) Reset() { *x = GetAdjudicatorReply_Group{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[71] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4588,7 +4485,7 @@ func (x *GetAdjudicatorReply_Group) String() string { func (*GetAdjudicatorReply_Group) ProtoMessage() {} func (x *GetAdjudicatorReply_Group) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[71] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4601,7 +4498,7 @@ func (x *GetAdjudicatorReply_Group) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAdjudicatorReply_Group.ProtoReflect.Descriptor instead. func (*GetAdjudicatorReply_Group) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{52, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{51, 0} } func (x *GetAdjudicatorReply_Group) GetId() int64 { @@ -4630,7 +4527,7 @@ type BatchCreateUserReply_User struct { func (x *BatchCreateUserReply_User) Reset() { *x = BatchCreateUserReply_User{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[72] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4643,7 +4540,7 @@ func (x *BatchCreateUserReply_User) String() string { func (*BatchCreateUserReply_User) ProtoMessage() {} func (x *BatchCreateUserReply_User) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[72] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4656,7 +4553,7 @@ func (x *BatchCreateUserReply_User) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchCreateUserReply_User.ProtoReflect.Descriptor instead. func (*BatchCreateUserReply_User) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{56, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{55, 0} } func (x *BatchCreateUserReply_User) GetUsername() string { @@ -4687,7 +4584,7 @@ type ListUserReply_User struct { func (x *ListUserReply_User) Reset() { *x = ListUserReply_User{} if protoimpl.UnsafeEnabled { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[73] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4700,7 +4597,7 @@ func (x *ListUserReply_User) String() string { func (*ListUserReply_User) ProtoMessage() {} func (x *ListUserReply_User) ProtoReflect() protoreflect.Message { - mi := &file_admin_admin_service_v1_admin_proto_msgTypes[73] + mi := &file_admin_admin_service_v1_admin_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4713,7 +4610,7 @@ func (x *ListUserReply_User) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUserReply_User.ProtoReflect.Descriptor instead. func (*ListUserReply_User) Descriptor() ([]byte, []int) { - return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{64, 0} + return file_admin_admin_service_v1_admin_proto_rawDescGZIP(), []int{63, 0} } func (x *ListUserReply_User) GetId() int64 { @@ -4758,372 +4655,362 @@ var file_admin_admin_service_v1_admin_proto_rawDesc = []byte{ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5b, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x61, - 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x41, 0x75, 0x74, - 0x6f, 0x22, 0x3e, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, - 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, - 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, - 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x22, 0xe4, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, + 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x49, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, + 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0xe4, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x22, 0xf4, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, - 0x78, 0x74, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x78, 0x74, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xf4, 0x02, - 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, - 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x12, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x22, 0xef, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, 0x20, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, - 0x2a, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xd5, 0x03, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x57, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x1a, 0xe7, 0x02, 0x0a, 0x07, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, - 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x30, 0x00, 0x30, 0x01, 0x52, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x35, 0x0a, 0x14, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, - 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x2e, 0x0a, - 0x12, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x32, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, - 0x64, 0x22, 0x93, 0x04, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, - 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0xaa, 0x03, 0x0a, 0x0a, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x67, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, - 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, - 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x1a, 0xc7, 0x01, - 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, - 0x69, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x74, 0x72, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x13, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x63, 0x68, 0x69, 0x65, - 0x76, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0x22, 0x0a, 0x10, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, - 0xa1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, - 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x21, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0x64, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, - 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xf8, 0x01, - 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x4f, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x1a, 0x94, 0x01, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x73, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9b, 0x01, 0x0a, 0x0a, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1c, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, - 0x6d, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x4e, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, - 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x66, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaa, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, - 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdc, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, - 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, - 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x2e, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2e, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x2e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x2e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, - 0x23, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, + 0x23, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x69, 0x64, 0x22, 0xd7, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x52, 0x02, 0x69, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, + 0x0b, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xd5, + 0x03, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x57, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x73, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x1a, 0xe7, 0x02, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x30, 0x00, + 0x30, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x35, 0x0a, 0x14, 0x4d, 0x61, 0x6e, + 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x22, 0x2e, 0x0a, 0x12, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x22, 0x32, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x73, 0x74, 0x49, 0x64, 0x22, 0x93, 0x04, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x53, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, + 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0xaa, 0x03, + 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x67, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, + 0x1a, 0xc7, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x4a, + 0x0a, 0x13, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x63, + 0x68, 0x69, 0x65, 0x76, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x12, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, + 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0x22, + 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x69, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x10, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x21, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0x64, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, + 0x0d, 0x22, 0x0b, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x22, 0x0b, 0x20, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x94, 0x01, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x07, + 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x9b, 0x01, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, + 0x64, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4a, + 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, + 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x44, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x4e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x66, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, + 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x4f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0xac, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, + 0x24, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xac, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, + 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x22, 0x2e, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x22, 0xda, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, @@ -5134,7 +5021,7 @@ var file_admin_admin_service_v1_admin_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x22, 0xef, 0x03, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x65, 0x6e, 0x63, 0x79, 0x22, 0xda, 0x03, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, @@ -5144,471 +5031,470 @@ var file_admin_admin_service_v1_admin_proto_rawDesc = []byte{ 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x73, 0x1a, 0xcf, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x6c, 0x65, 0x6d, 0x73, 0x1a, 0xba, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, - 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xf0, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x59, 0x0a, 0x05, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x1a, 0x7d, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x75, - 0x64, 0x67, 0x65, 0x22, 0x6d, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, - 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x32, - 0x0a, 0x15, 0x61, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x61, - 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x73, 0x22, 0x32, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, - 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x36, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, - 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x98, - 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x54, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, + 0x0a, 0x0c, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, - 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x2b, 0x0a, 0x05, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf0, 0x01, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x59, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x50, 0x72, 0x6f, + 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x1a, + 0x7d, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x75, 0x64, 0x67, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x22, 0x6d, + 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x64, 0x6a, + 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x61, 0x64, 0x6a, 0x75, 0x64, 0x69, + 0x63, 0x61, 0x74, 0x6f, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, + 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x22, 0x36, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, + 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x98, 0x01, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x54, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x2b, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x68, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0x21, + 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x56, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x3e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x73, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x1f, 0x0a, - 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xaa, - 0x01, 0x0a, 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, - 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x3e, 0x0a, 0x04, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x0f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x11, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, - 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x20, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6d, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3f, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xc3, 0x01, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x4b, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x65, 0x0a, 0x04, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x2a, 0xcc, 0x02, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x0c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x10, 0x00, 0x1a, 0x04, 0xa8, 0x45, 0xf4, 0x03, 0x12, 0x1a, 0x0a, 0x10, 0x49, - 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, - 0x01, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x45, - 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x04, 0xa8, 0x45, - 0x90, 0x03, 0x12, 0x1b, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x4f, - 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, - 0x19, 0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, - 0x49, 0x44, 0x10, 0x04, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x43, 0x4f, - 0x4e, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x05, 0x1a, - 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x06, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, - 0x12, 0x17, 0x0a, 0x0d, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x10, 0x07, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x17, 0x0a, 0x0d, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x04, 0xa8, 0x45, - 0x90, 0x03, 0x12, 0x18, 0x0a, 0x0e, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, - 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x09, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, 0x16, 0x0a, 0x0c, - 0x55, 0x53, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x1a, 0x04, - 0xa8, 0x45, 0x90, 0x03, 0x12, 0x16, 0x0a, 0x0c, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x56, - 0x41, 0x4c, 0x49, 0x44, 0x10, 0x0b, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x1a, 0x04, 0xa0, 0x45, - 0xf4, 0x03, 0x2a, 0x32, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x73, 0x74, 0x10, 0x02, 0x32, 0xdb, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x12, 0xb6, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, - 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x40, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x22, 0x23, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x0f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4b, 0x0a, 0x05, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x65, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2a, 0xcc, + 0x02, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, + 0x0a, 0x0c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x00, + 0x1a, 0x04, 0xa8, 0x45, 0xf4, 0x03, 0x12, 0x1a, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x1a, 0x04, 0xa8, 0x45, + 0x90, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x49, + 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x1b, 0x0a, + 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, + 0x4e, 0x44, 0x10, 0x03, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x43, 0x4f, + 0x4e, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x04, 0x1a, + 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x19, 0x0a, 0x0f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x53, 0x54, + 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x05, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, + 0x12, 0x19, 0x0a, 0x0f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, + 0x55, 0x4e, 0x44, 0x10, 0x06, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, 0x17, 0x0a, 0x0d, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x07, 0x1a, 0x04, + 0xa8, 0x45, 0x90, 0x03, 0x12, 0x17, 0x0a, 0x0d, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x45, 0x58, + 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, 0x18, 0x0a, + 0x0e, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x09, 0x1a, 0x04, 0xa8, 0x45, 0x94, 0x03, 0x12, 0x16, 0x0a, 0x0c, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x45, 0x58, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x12, + 0x16, 0x0a, 0x0c, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, + 0x0b, 0x1a, 0x04, 0xa8, 0x45, 0x90, 0x03, 0x1a, 0x04, 0xa0, 0x45, 0xf4, 0x03, 0x2a, 0x32, 0x0a, + 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x10, + 0x02, 0x32, 0xdb, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0xb6, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, + 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x40, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, + 0x6d, 0x49, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, + 0x2a, 0x12, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, + 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, + 0x2a, 0x22, 0x08, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x94, 0x01, 0x0a, 0x0d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x73, 0x65, 0x73, 0x42, 0x79, 0x50, - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x49, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, 0x63, 0x61, 0x73, 0x65, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x0d, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x1a, 0x08, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x73, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x12, 0x94, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x2a, 0x0d, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8d, 0x01, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x1a, 0x08, 0x2f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0f, 0x2a, 0x0d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0x8d, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, - 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, - 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0f, 0x12, 0x0d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0x8b, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, + 0x08, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x41, 0x64, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x38, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x12, + 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x9a, 0x01, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8c, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, + 0x06, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8c, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x10, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x12, 0xa3, - 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x73, 0x12, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, - 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0d, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, - 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x1a, 0x06, + 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, - 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, - 0x2a, 0x22, 0x0d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x6b, - 0x12, 0x9a, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, - 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, - 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x6e, - 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1c, 0x12, 0x1a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x6b, - 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8c, 0x01, - 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, 0x0b, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8c, 0x01, 0x0a, - 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, - 0x3a, 0x01, 0x2a, 0x1a, 0x06, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x0b, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, - 0x0b, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, - 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, + 0x83, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, - 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x83, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, - 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x08, 0x12, 0x06, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x9c, 0x01, 0x0a, 0x0b, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, - 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, - 0x2a, 0x22, 0x16, 0x2f, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, - 0x73, 0x12, 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x0e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x12, 0x9f, 0x01, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x6a, 0x75, 0x64, - 0x67, 0x65, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xb1, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, - 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x9c, 0x01, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x4a, 0x75, 0x64, 0x67, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, - 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x24, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x61, 0x64, 0x6a, 0x75, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, - 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, - 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x4a, 0x75, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x6a, + 0x75, 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x12, 0x3d, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, + 0x6c, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4a, 0x75, 0x64, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, + 0x12, 0x06, 0x2f, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x6a, 0x75, 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x11, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x3b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, - 0x12, 0x19, 0x2f, 0x61, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x0d, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x37, 0x2e, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, + 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x61, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, + 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, + 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x38, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x64, 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x64, + 0x6a, 0x75, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, + 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, + 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x94, 0x01, + 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, + 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x1a, 0x08, 0x2f, 0x70, 0x72, 0x6f, + 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x96, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x12, 0x94, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, - 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, + 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x2a, 0x0d, + 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x1a, - 0x08, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x96, 0x01, 0x0a, 0x0d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x37, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, - 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0f, 0x2a, 0x0d, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x12, 0x35, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, - 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, - 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x8d, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2f, 0x6c, 0x69, 0x73, 0x74, + 0x12, 0x8d, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x12, + 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x62, 0x6c, 0x65, 0x6d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0f, 0x12, 0x0d, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0x9d, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, - 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x16, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2d, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, - 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x6c, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, + 0x12, 0x0e, 0x2f, 0x70, 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x12, 0x89, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x9e, 0x01, 0x0a, + 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x89, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, - 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x1a, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x8b, - 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x34, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, - 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x82, 0x01, 0x0a, - 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x12, 0x80, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x32, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, + 0x0c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x12, 0x89, 0x01, + 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, + 0x2a, 0x1a, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x34, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x42, 0x8b, 0x02, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x73, 0x61, - 0x73, 0x74, 0x6f, 0x6a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2f, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x76, 0x31, 0xa2, 0x02, 0x05, 0x41, 0x53, 0x41, 0x41, - 0x53, 0xaa, 0x02, 0x21, 0x41, 0x70, 0x69, 0x2e, 0x53, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x21, 0x41, 0x70, 0x69, 0x5c, 0x53, 0x61, 0x73, 0x74, - 0x6f, 0x6a, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x2d, 0x41, 0x70, 0x69, 0x5c, - 0x53, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x26, 0x41, 0x70, 0x69, 0x3a, - 0x3a, 0x53, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x2a, 0x0b, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, + 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, + 0x0b, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x80, 0x01, 0x0a, + 0x08, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, + 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x42, + 0x8b, 0x02, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x61, 0x73, 0x74, + 0x6f, 0x6a, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x73, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, + 0x31, 0x3b, 0x76, 0x31, 0xa2, 0x02, 0x05, 0x41, 0x53, 0x41, 0x41, 0x53, 0xaa, 0x02, 0x21, 0x41, + 0x70, 0x69, 0x2e, 0x53, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x21, 0x41, 0x70, 0x69, 0x5c, 0x53, 0x61, 0x73, 0x74, 0x6f, 0x6a, 0x5c, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x2d, 0x41, 0x70, 0x69, 0x5c, 0x53, 0x61, 0x73, 0x74, 0x6f, + 0x6a, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x26, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x53, 0x61, 0x73, 0x74, + 0x6f, 0x6a, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5624,178 +5510,177 @@ func file_admin_admin_service_v1_admin_proto_rawDescGZIP() []byte { } var file_admin_admin_service_v1_admin_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_admin_admin_service_v1_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 74) +var file_admin_admin_service_v1_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 73) var file_admin_admin_service_v1_admin_proto_goTypes = []any{ (ErrorReason)(0), // 0: api.sastoj.admin.admin.service.v1.ErrorReason (Visibility)(0), // 1: api.sastoj.admin.admin.service.v1.Visibility - (*Case)(nil), // 2: api.sastoj.admin.admin.service.v1.Case - (*DeleteCasesByProblemIdRequest)(nil), // 3: api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdRequest - (*DeleteCasesByProblemIdReply)(nil), // 4: api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdReply - (*CreateContestRequest)(nil), // 5: api.sastoj.admin.admin.service.v1.CreateContestRequest - (*CreateContestReply)(nil), // 6: api.sastoj.admin.admin.service.v1.CreateContestReply - (*UpdateContestRequest)(nil), // 7: api.sastoj.admin.admin.service.v1.UpdateContestRequest - (*UpdateContestReply)(nil), // 8: api.sastoj.admin.admin.service.v1.UpdateContestReply - (*DeleteContestRequest)(nil), // 9: api.sastoj.admin.admin.service.v1.DeleteContestRequest - (*DeleteContestReply)(nil), // 10: api.sastoj.admin.admin.service.v1.DeleteContestReply - (*GetContestRequest)(nil), // 11: api.sastoj.admin.admin.service.v1.GetContestRequest - (*GetContestReply)(nil), // 12: api.sastoj.admin.admin.service.v1.GetContestReply - (*ListContestRequest)(nil), // 13: api.sastoj.admin.admin.service.v1.ListContestRequest - (*ListContestReply)(nil), // 14: api.sastoj.admin.admin.service.v1.ListContestReply - (*AddContestantsRequest)(nil), // 15: api.sastoj.admin.admin.service.v1.AddContestantsRequest - (*AddContestantsReply)(nil), // 16: api.sastoj.admin.admin.service.v1.AddContestantsReply - (*ManualRankingRequest)(nil), // 17: api.sastoj.admin.admin.service.v1.ManualRankingRequest - (*ManualRankingReply)(nil), // 18: api.sastoj.admin.admin.service.v1.ManualRankingReply - (*GetRankingRequest)(nil), // 19: api.sastoj.admin.admin.service.v1.GetRankingRequest - (*GetRankingReply)(nil), // 20: api.sastoj.admin.admin.service.v1.GetRankingReply - (*CreateGroupRequest)(nil), // 21: api.sastoj.admin.admin.service.v1.CreateGroupRequest - (*CreateGroupReply)(nil), // 22: api.sastoj.admin.admin.service.v1.CreateGroupReply - (*UpdateGroupRequest)(nil), // 23: api.sastoj.admin.admin.service.v1.UpdateGroupRequest - (*UpdateGroupReply)(nil), // 24: api.sastoj.admin.admin.service.v1.UpdateGroupReply - (*DeleteGroupRequest)(nil), // 25: api.sastoj.admin.admin.service.v1.DeleteGroupRequest - (*DeleteGroupReply)(nil), // 26: api.sastoj.admin.admin.service.v1.DeleteGroupReply - (*GetGroupRequest)(nil), // 27: api.sastoj.admin.admin.service.v1.GetGroupRequest - (*GetGroupReply)(nil), // 28: api.sastoj.admin.admin.service.v1.GetGroupReply - (*ListGroupRequest)(nil), // 29: api.sastoj.admin.admin.service.v1.ListGroupRequest - (*ListGroupReply)(nil), // 30: api.sastoj.admin.admin.service.v1.ListGroupReply - (*Problem)(nil), // 31: api.sastoj.admin.admin.service.v1.Problem - (*Submission)(nil), // 32: api.sastoj.admin.admin.service.v1.Submission - (*SubmitJudgeRequest)(nil), // 33: api.sastoj.admin.admin.service.v1.SubmitJudgeRequest - (*SubmitJudgeReply)(nil), // 34: api.sastoj.admin.admin.service.v1.SubmitJudgeReply - (*GetJudgableProblemsRequest)(nil), // 35: api.sastoj.admin.admin.service.v1.GetJudgableProblemsRequest - (*GetJudgableProblemsReply)(nil), // 36: api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply - (*GetSubmissionsRequest)(nil), // 37: api.sastoj.admin.admin.service.v1.GetSubmissionsRequest - (*GetSubmissionsReply)(nil), // 38: api.sastoj.admin.admin.service.v1.GetSubmissionsReply - (*CreateProblemRequest)(nil), // 39: api.sastoj.admin.admin.service.v1.CreateProblemRequest - (*CreateProblemReply)(nil), // 40: api.sastoj.admin.admin.service.v1.CreateProblemReply - (*UpdateProblemRequest)(nil), // 41: api.sastoj.admin.admin.service.v1.UpdateProblemRequest - (*UpdateProblemReply)(nil), // 42: api.sastoj.admin.admin.service.v1.UpdateProblemReply - (*DeleteProblemRequest)(nil), // 43: api.sastoj.admin.admin.service.v1.DeleteProblemRequest - (*DeleteProblemReply)(nil), // 44: api.sastoj.admin.admin.service.v1.DeleteProblemReply - (*GetProblemRequest)(nil), // 45: api.sastoj.admin.admin.service.v1.GetProblemRequest - (*GetProblemReply)(nil), // 46: api.sastoj.admin.admin.service.v1.GetProblemReply - (*ListProblemRequest)(nil), // 47: api.sastoj.admin.admin.service.v1.ListProblemRequest - (*ListProblemReply)(nil), // 48: api.sastoj.admin.admin.service.v1.ListProblemReply - (*GetProblemTypesRequest)(nil), // 49: api.sastoj.admin.admin.service.v1.GetProblemTypesRequest - (*GetProblemTypesReply)(nil), // 50: api.sastoj.admin.admin.service.v1.GetProblemTypesReply - (*UpdateAdjudicatorRequest)(nil), // 51: api.sastoj.admin.admin.service.v1.UpdateAdjudicatorRequest - (*UpdateAdjudicatorReply)(nil), // 52: api.sastoj.admin.admin.service.v1.UpdateAdjudicatorReply - (*GetAdjudicatorRequest)(nil), // 53: api.sastoj.admin.admin.service.v1.GetAdjudicatorRequest - (*GetAdjudicatorReply)(nil), // 54: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply - (*CreateUserRequest)(nil), // 55: api.sastoj.admin.admin.service.v1.CreateUserRequest - (*CreateUserReply)(nil), // 56: api.sastoj.admin.admin.service.v1.CreateUserReply - (*BatchCreateUserRequest)(nil), // 57: api.sastoj.admin.admin.service.v1.BatchCreateUserRequest - (*BatchCreateUserReply)(nil), // 58: api.sastoj.admin.admin.service.v1.BatchCreateUserReply - (*UpdateUserRequest)(nil), // 59: api.sastoj.admin.admin.service.v1.UpdateUserRequest - (*UpdateUserReply)(nil), // 60: api.sastoj.admin.admin.service.v1.UpdateUserReply - (*DeleteUserRequest)(nil), // 61: api.sastoj.admin.admin.service.v1.DeleteUserRequest - (*DeleteUserReply)(nil), // 62: api.sastoj.admin.admin.service.v1.DeleteUserReply - (*GetUserRequest)(nil), // 63: api.sastoj.admin.admin.service.v1.GetUserRequest - (*GetUserReply)(nil), // 64: api.sastoj.admin.admin.service.v1.GetUserReply - (*ListUserRequest)(nil), // 65: api.sastoj.admin.admin.service.v1.ListUserRequest - (*ListUserReply)(nil), // 66: api.sastoj.admin.admin.service.v1.ListUserReply - (*ListContestReply_Contest)(nil), // 67: api.sastoj.admin.admin.service.v1.ListContestReply.Contest - (*GetRankingReply_UserResult)(nil), // 68: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult - (*GetRankingReply_UserResult_ProblemResult)(nil), // 69: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult - (*ListGroupReply_Group)(nil), // 70: api.sastoj.admin.admin.service.v1.ListGroupReply.Group - (*ListProblemReply_Problem)(nil), // 71: api.sastoj.admin.admin.service.v1.ListProblemReply.Problem - (*GetProblemTypesReply_ProblemType)(nil), // 72: api.sastoj.admin.admin.service.v1.GetProblemTypesReply.ProblemType - (*GetAdjudicatorReply_Group)(nil), // 73: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.Group - (*BatchCreateUserReply_User)(nil), // 74: api.sastoj.admin.admin.service.v1.BatchCreateUserReply.User - (*ListUserReply_User)(nil), // 75: api.sastoj.admin.admin.service.v1.ListUserReply.User - (*timestamppb.Timestamp)(nil), // 76: google.protobuf.Timestamp + (*DeleteCasesByProblemIdRequest)(nil), // 2: api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdRequest + (*DeleteCasesByProblemIdReply)(nil), // 3: api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdReply + (*CreateContestRequest)(nil), // 4: api.sastoj.admin.admin.service.v1.CreateContestRequest + (*CreateContestReply)(nil), // 5: api.sastoj.admin.admin.service.v1.CreateContestReply + (*UpdateContestRequest)(nil), // 6: api.sastoj.admin.admin.service.v1.UpdateContestRequest + (*UpdateContestReply)(nil), // 7: api.sastoj.admin.admin.service.v1.UpdateContestReply + (*DeleteContestRequest)(nil), // 8: api.sastoj.admin.admin.service.v1.DeleteContestRequest + (*DeleteContestReply)(nil), // 9: api.sastoj.admin.admin.service.v1.DeleteContestReply + (*GetContestRequest)(nil), // 10: api.sastoj.admin.admin.service.v1.GetContestRequest + (*GetContestReply)(nil), // 11: api.sastoj.admin.admin.service.v1.GetContestReply + (*ListContestRequest)(nil), // 12: api.sastoj.admin.admin.service.v1.ListContestRequest + (*ListContestReply)(nil), // 13: api.sastoj.admin.admin.service.v1.ListContestReply + (*AddContestantsRequest)(nil), // 14: api.sastoj.admin.admin.service.v1.AddContestantsRequest + (*AddContestantsReply)(nil), // 15: api.sastoj.admin.admin.service.v1.AddContestantsReply + (*ManualRankingRequest)(nil), // 16: api.sastoj.admin.admin.service.v1.ManualRankingRequest + (*ManualRankingReply)(nil), // 17: api.sastoj.admin.admin.service.v1.ManualRankingReply + (*GetRankingRequest)(nil), // 18: api.sastoj.admin.admin.service.v1.GetRankingRequest + (*GetRankingReply)(nil), // 19: api.sastoj.admin.admin.service.v1.GetRankingReply + (*CreateGroupRequest)(nil), // 20: api.sastoj.admin.admin.service.v1.CreateGroupRequest + (*CreateGroupReply)(nil), // 21: api.sastoj.admin.admin.service.v1.CreateGroupReply + (*UpdateGroupRequest)(nil), // 22: api.sastoj.admin.admin.service.v1.UpdateGroupRequest + (*UpdateGroupReply)(nil), // 23: api.sastoj.admin.admin.service.v1.UpdateGroupReply + (*DeleteGroupRequest)(nil), // 24: api.sastoj.admin.admin.service.v1.DeleteGroupRequest + (*DeleteGroupReply)(nil), // 25: api.sastoj.admin.admin.service.v1.DeleteGroupReply + (*GetGroupRequest)(nil), // 26: api.sastoj.admin.admin.service.v1.GetGroupRequest + (*GetGroupReply)(nil), // 27: api.sastoj.admin.admin.service.v1.GetGroupReply + (*ListGroupRequest)(nil), // 28: api.sastoj.admin.admin.service.v1.ListGroupRequest + (*ListGroupReply)(nil), // 29: api.sastoj.admin.admin.service.v1.ListGroupReply + (*Problem)(nil), // 30: api.sastoj.admin.admin.service.v1.Problem + (*Submission)(nil), // 31: api.sastoj.admin.admin.service.v1.Submission + (*SubmitJudgeRequest)(nil), // 32: api.sastoj.admin.admin.service.v1.SubmitJudgeRequest + (*SubmitJudgeReply)(nil), // 33: api.sastoj.admin.admin.service.v1.SubmitJudgeReply + (*GetJudgableProblemsRequest)(nil), // 34: api.sastoj.admin.admin.service.v1.GetJudgableProblemsRequest + (*GetJudgableProblemsReply)(nil), // 35: api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply + (*GetSubmissionsRequest)(nil), // 36: api.sastoj.admin.admin.service.v1.GetSubmissionsRequest + (*GetSubmissionsReply)(nil), // 37: api.sastoj.admin.admin.service.v1.GetSubmissionsReply + (*CreateProblemRequest)(nil), // 38: api.sastoj.admin.admin.service.v1.CreateProblemRequest + (*CreateProblemReply)(nil), // 39: api.sastoj.admin.admin.service.v1.CreateProblemReply + (*UpdateProblemRequest)(nil), // 40: api.sastoj.admin.admin.service.v1.UpdateProblemRequest + (*UpdateProblemReply)(nil), // 41: api.sastoj.admin.admin.service.v1.UpdateProblemReply + (*DeleteProblemRequest)(nil), // 42: api.sastoj.admin.admin.service.v1.DeleteProblemRequest + (*DeleteProblemReply)(nil), // 43: api.sastoj.admin.admin.service.v1.DeleteProblemReply + (*GetProblemRequest)(nil), // 44: api.sastoj.admin.admin.service.v1.GetProblemRequest + (*GetProblemReply)(nil), // 45: api.sastoj.admin.admin.service.v1.GetProblemReply + (*ListProblemRequest)(nil), // 46: api.sastoj.admin.admin.service.v1.ListProblemRequest + (*ListProblemReply)(nil), // 47: api.sastoj.admin.admin.service.v1.ListProblemReply + (*GetProblemTypesRequest)(nil), // 48: api.sastoj.admin.admin.service.v1.GetProblemTypesRequest + (*GetProblemTypesReply)(nil), // 49: api.sastoj.admin.admin.service.v1.GetProblemTypesReply + (*UpdateAdjudicatorRequest)(nil), // 50: api.sastoj.admin.admin.service.v1.UpdateAdjudicatorRequest + (*UpdateAdjudicatorReply)(nil), // 51: api.sastoj.admin.admin.service.v1.UpdateAdjudicatorReply + (*GetAdjudicatorRequest)(nil), // 52: api.sastoj.admin.admin.service.v1.GetAdjudicatorRequest + (*GetAdjudicatorReply)(nil), // 53: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply + (*CreateUserRequest)(nil), // 54: api.sastoj.admin.admin.service.v1.CreateUserRequest + (*CreateUserReply)(nil), // 55: api.sastoj.admin.admin.service.v1.CreateUserReply + (*BatchCreateUserRequest)(nil), // 56: api.sastoj.admin.admin.service.v1.BatchCreateUserRequest + (*BatchCreateUserReply)(nil), // 57: api.sastoj.admin.admin.service.v1.BatchCreateUserReply + (*UpdateUserRequest)(nil), // 58: api.sastoj.admin.admin.service.v1.UpdateUserRequest + (*UpdateUserReply)(nil), // 59: api.sastoj.admin.admin.service.v1.UpdateUserReply + (*DeleteUserRequest)(nil), // 60: api.sastoj.admin.admin.service.v1.DeleteUserRequest + (*DeleteUserReply)(nil), // 61: api.sastoj.admin.admin.service.v1.DeleteUserReply + (*GetUserRequest)(nil), // 62: api.sastoj.admin.admin.service.v1.GetUserRequest + (*GetUserReply)(nil), // 63: api.sastoj.admin.admin.service.v1.GetUserReply + (*ListUserRequest)(nil), // 64: api.sastoj.admin.admin.service.v1.ListUserRequest + (*ListUserReply)(nil), // 65: api.sastoj.admin.admin.service.v1.ListUserReply + (*ListContestReply_Contest)(nil), // 66: api.sastoj.admin.admin.service.v1.ListContestReply.Contest + (*GetRankingReply_UserResult)(nil), // 67: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult + (*GetRankingReply_UserResult_ProblemResult)(nil), // 68: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult + (*ListGroupReply_Group)(nil), // 69: api.sastoj.admin.admin.service.v1.ListGroupReply.Group + (*ListProblemReply_Problem)(nil), // 70: api.sastoj.admin.admin.service.v1.ListProblemReply.Problem + (*GetProblemTypesReply_ProblemType)(nil), // 71: api.sastoj.admin.admin.service.v1.GetProblemTypesReply.ProblemType + (*GetAdjudicatorReply_Group)(nil), // 72: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.Group + (*BatchCreateUserReply_User)(nil), // 73: api.sastoj.admin.admin.service.v1.BatchCreateUserReply.User + (*ListUserReply_User)(nil), // 74: api.sastoj.admin.admin.service.v1.ListUserReply.User + (*timestamppb.Timestamp)(nil), // 75: google.protobuf.Timestamp } var file_admin_admin_service_v1_admin_proto_depIdxs = []int32{ - 76, // 0: api.sastoj.admin.admin.service.v1.CreateContestRequest.start_time:type_name -> google.protobuf.Timestamp - 76, // 1: api.sastoj.admin.admin.service.v1.CreateContestRequest.end_time:type_name -> google.protobuf.Timestamp - 76, // 2: api.sastoj.admin.admin.service.v1.CreateContestRequest.create_time:type_name -> google.protobuf.Timestamp - 76, // 3: api.sastoj.admin.admin.service.v1.UpdateContestRequest.start_time:type_name -> google.protobuf.Timestamp - 76, // 4: api.sastoj.admin.admin.service.v1.UpdateContestRequest.end_time:type_name -> google.protobuf.Timestamp - 76, // 5: api.sastoj.admin.admin.service.v1.UpdateContestRequest.create_time:type_name -> google.protobuf.Timestamp - 76, // 6: api.sastoj.admin.admin.service.v1.GetContestReply.start_time:type_name -> google.protobuf.Timestamp - 76, // 7: api.sastoj.admin.admin.service.v1.GetContestReply.end_time:type_name -> google.protobuf.Timestamp - 76, // 8: api.sastoj.admin.admin.service.v1.GetContestReply.create_time:type_name -> google.protobuf.Timestamp - 67, // 9: api.sastoj.admin.admin.service.v1.ListContestReply.contests:type_name -> api.sastoj.admin.admin.service.v1.ListContestReply.Contest - 68, // 10: api.sastoj.admin.admin.service.v1.GetRankingReply.users:type_name -> api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult - 70, // 11: api.sastoj.admin.admin.service.v1.ListGroupReply.groups:type_name -> api.sastoj.admin.admin.service.v1.ListGroupReply.Group - 76, // 12: api.sastoj.admin.admin.service.v1.Submission.create_time:type_name -> google.protobuf.Timestamp - 31, // 13: api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply.results:type_name -> api.sastoj.admin.admin.service.v1.Problem - 32, // 14: api.sastoj.admin.admin.service.v1.GetSubmissionsReply.submissions:type_name -> api.sastoj.admin.admin.service.v1.Submission + 75, // 0: api.sastoj.admin.admin.service.v1.CreateContestRequest.start_time:type_name -> google.protobuf.Timestamp + 75, // 1: api.sastoj.admin.admin.service.v1.CreateContestRequest.end_time:type_name -> google.protobuf.Timestamp + 75, // 2: api.sastoj.admin.admin.service.v1.CreateContestRequest.create_time:type_name -> google.protobuf.Timestamp + 75, // 3: api.sastoj.admin.admin.service.v1.UpdateContestRequest.start_time:type_name -> google.protobuf.Timestamp + 75, // 4: api.sastoj.admin.admin.service.v1.UpdateContestRequest.end_time:type_name -> google.protobuf.Timestamp + 75, // 5: api.sastoj.admin.admin.service.v1.UpdateContestRequest.create_time:type_name -> google.protobuf.Timestamp + 75, // 6: api.sastoj.admin.admin.service.v1.GetContestReply.start_time:type_name -> google.protobuf.Timestamp + 75, // 7: api.sastoj.admin.admin.service.v1.GetContestReply.end_time:type_name -> google.protobuf.Timestamp + 75, // 8: api.sastoj.admin.admin.service.v1.GetContestReply.create_time:type_name -> google.protobuf.Timestamp + 66, // 9: api.sastoj.admin.admin.service.v1.ListContestReply.contests:type_name -> api.sastoj.admin.admin.service.v1.ListContestReply.Contest + 67, // 10: api.sastoj.admin.admin.service.v1.GetRankingReply.users:type_name -> api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult + 69, // 11: api.sastoj.admin.admin.service.v1.ListGroupReply.groups:type_name -> api.sastoj.admin.admin.service.v1.ListGroupReply.Group + 75, // 12: api.sastoj.admin.admin.service.v1.Submission.create_time:type_name -> google.protobuf.Timestamp + 30, // 13: api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply.results:type_name -> api.sastoj.admin.admin.service.v1.Problem + 31, // 14: api.sastoj.admin.admin.service.v1.GetSubmissionsReply.submissions:type_name -> api.sastoj.admin.admin.service.v1.Submission 1, // 15: api.sastoj.admin.admin.service.v1.CreateProblemRequest.visibility:type_name -> api.sastoj.admin.admin.service.v1.Visibility 1, // 16: api.sastoj.admin.admin.service.v1.UpdateProblemRequest.visibility:type_name -> api.sastoj.admin.admin.service.v1.Visibility 1, // 17: api.sastoj.admin.admin.service.v1.GetProblemReply.visibility:type_name -> api.sastoj.admin.admin.service.v1.Visibility - 71, // 18: api.sastoj.admin.admin.service.v1.ListProblemReply.problems:type_name -> api.sastoj.admin.admin.service.v1.ListProblemReply.Problem - 72, // 19: api.sastoj.admin.admin.service.v1.GetProblemTypesReply.types:type_name -> api.sastoj.admin.admin.service.v1.GetProblemTypesReply.ProblemType - 73, // 20: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.groups:type_name -> api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.Group - 74, // 21: api.sastoj.admin.admin.service.v1.BatchCreateUserReply.users:type_name -> api.sastoj.admin.admin.service.v1.BatchCreateUserReply.User - 75, // 22: api.sastoj.admin.admin.service.v1.ListUserReply.users:type_name -> api.sastoj.admin.admin.service.v1.ListUserReply.User - 76, // 23: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.start_time:type_name -> google.protobuf.Timestamp - 76, // 24: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.end_time:type_name -> google.protobuf.Timestamp - 76, // 25: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.create_time:type_name -> google.protobuf.Timestamp - 69, // 26: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.problems:type_name -> api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult - 76, // 27: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult.score_achieved_time:type_name -> google.protobuf.Timestamp + 70, // 18: api.sastoj.admin.admin.service.v1.ListProblemReply.problems:type_name -> api.sastoj.admin.admin.service.v1.ListProblemReply.Problem + 71, // 19: api.sastoj.admin.admin.service.v1.GetProblemTypesReply.types:type_name -> api.sastoj.admin.admin.service.v1.GetProblemTypesReply.ProblemType + 72, // 20: api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.groups:type_name -> api.sastoj.admin.admin.service.v1.GetAdjudicatorReply.Group + 73, // 21: api.sastoj.admin.admin.service.v1.BatchCreateUserReply.users:type_name -> api.sastoj.admin.admin.service.v1.BatchCreateUserReply.User + 74, // 22: api.sastoj.admin.admin.service.v1.ListUserReply.users:type_name -> api.sastoj.admin.admin.service.v1.ListUserReply.User + 75, // 23: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.start_time:type_name -> google.protobuf.Timestamp + 75, // 24: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.end_time:type_name -> google.protobuf.Timestamp + 75, // 25: api.sastoj.admin.admin.service.v1.ListContestReply.Contest.create_time:type_name -> google.protobuf.Timestamp + 68, // 26: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.problems:type_name -> api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult + 75, // 27: api.sastoj.admin.admin.service.v1.GetRankingReply.UserResult.ProblemResult.score_achieved_time:type_name -> google.protobuf.Timestamp 1, // 28: api.sastoj.admin.admin.service.v1.ListProblemReply.Problem.visibility:type_name -> api.sastoj.admin.admin.service.v1.Visibility - 3, // 29: api.sastoj.admin.admin.service.v1.Admin.DeleteCasesByProblemId:input_type -> api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdRequest - 5, // 30: api.sastoj.admin.admin.service.v1.Admin.CreateContest:input_type -> api.sastoj.admin.admin.service.v1.CreateContestRequest - 7, // 31: api.sastoj.admin.admin.service.v1.Admin.UpdateContest:input_type -> api.sastoj.admin.admin.service.v1.UpdateContestRequest - 9, // 32: api.sastoj.admin.admin.service.v1.Admin.DeleteContest:input_type -> api.sastoj.admin.admin.service.v1.DeleteContestRequest - 11, // 33: api.sastoj.admin.admin.service.v1.Admin.GetContest:input_type -> api.sastoj.admin.admin.service.v1.GetContestRequest - 13, // 34: api.sastoj.admin.admin.service.v1.Admin.ListContest:input_type -> api.sastoj.admin.admin.service.v1.ListContestRequest - 15, // 35: api.sastoj.admin.admin.service.v1.Admin.AddContestants:input_type -> api.sastoj.admin.admin.service.v1.AddContestantsRequest - 17, // 36: api.sastoj.admin.admin.service.v1.Admin.ManualRanking:input_type -> api.sastoj.admin.admin.service.v1.ManualRankingRequest - 19, // 37: api.sastoj.admin.admin.service.v1.Admin.GetRanking:input_type -> api.sastoj.admin.admin.service.v1.GetRankingRequest - 21, // 38: api.sastoj.admin.admin.service.v1.Admin.CreateGroup:input_type -> api.sastoj.admin.admin.service.v1.CreateGroupRequest - 23, // 39: api.sastoj.admin.admin.service.v1.Admin.UpdateGroup:input_type -> api.sastoj.admin.admin.service.v1.UpdateGroupRequest - 25, // 40: api.sastoj.admin.admin.service.v1.Admin.DeleteGroup:input_type -> api.sastoj.admin.admin.service.v1.DeleteGroupRequest - 27, // 41: api.sastoj.admin.admin.service.v1.Admin.GetGroup:input_type -> api.sastoj.admin.admin.service.v1.GetGroupRequest - 29, // 42: api.sastoj.admin.admin.service.v1.Admin.ListGroup:input_type -> api.sastoj.admin.admin.service.v1.ListGroupRequest - 33, // 43: api.sastoj.admin.admin.service.v1.Admin.SubmitJudge:input_type -> api.sastoj.admin.admin.service.v1.SubmitJudgeRequest - 35, // 44: api.sastoj.admin.admin.service.v1.Admin.GetJudgableProblems:input_type -> api.sastoj.admin.admin.service.v1.GetJudgableProblemsRequest - 37, // 45: api.sastoj.admin.admin.service.v1.Admin.GetSubmissions:input_type -> api.sastoj.admin.admin.service.v1.GetSubmissionsRequest - 51, // 46: api.sastoj.admin.admin.service.v1.Admin.UpdateAdjudicator:input_type -> api.sastoj.admin.admin.service.v1.UpdateAdjudicatorRequest - 53, // 47: api.sastoj.admin.admin.service.v1.Admin.GetAdjudicator:input_type -> api.sastoj.admin.admin.service.v1.GetAdjudicatorRequest - 39, // 48: api.sastoj.admin.admin.service.v1.Admin.CreateProblem:input_type -> api.sastoj.admin.admin.service.v1.CreateProblemRequest - 41, // 49: api.sastoj.admin.admin.service.v1.Admin.UpdateProblem:input_type -> api.sastoj.admin.admin.service.v1.UpdateProblemRequest - 43, // 50: api.sastoj.admin.admin.service.v1.Admin.DeleteProblem:input_type -> api.sastoj.admin.admin.service.v1.DeleteProblemRequest - 47, // 51: api.sastoj.admin.admin.service.v1.Admin.ListProblem:input_type -> api.sastoj.admin.admin.service.v1.ListProblemRequest - 45, // 52: api.sastoj.admin.admin.service.v1.Admin.GetProblem:input_type -> api.sastoj.admin.admin.service.v1.GetProblemRequest - 49, // 53: api.sastoj.admin.admin.service.v1.Admin.GetProblemTypes:input_type -> api.sastoj.admin.admin.service.v1.GetProblemTypesRequest - 55, // 54: api.sastoj.admin.admin.service.v1.Admin.CreateUser:input_type -> api.sastoj.admin.admin.service.v1.CreateUserRequest - 57, // 55: api.sastoj.admin.admin.service.v1.Admin.BatchCreateUser:input_type -> api.sastoj.admin.admin.service.v1.BatchCreateUserRequest - 59, // 56: api.sastoj.admin.admin.service.v1.Admin.UpdateUser:input_type -> api.sastoj.admin.admin.service.v1.UpdateUserRequest - 61, // 57: api.sastoj.admin.admin.service.v1.Admin.DeleteUser:input_type -> api.sastoj.admin.admin.service.v1.DeleteUserRequest - 63, // 58: api.sastoj.admin.admin.service.v1.Admin.GetUser:input_type -> api.sastoj.admin.admin.service.v1.GetUserRequest - 65, // 59: api.sastoj.admin.admin.service.v1.Admin.ListUser:input_type -> api.sastoj.admin.admin.service.v1.ListUserRequest - 4, // 60: api.sastoj.admin.admin.service.v1.Admin.DeleteCasesByProblemId:output_type -> api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdReply - 6, // 61: api.sastoj.admin.admin.service.v1.Admin.CreateContest:output_type -> api.sastoj.admin.admin.service.v1.CreateContestReply - 8, // 62: api.sastoj.admin.admin.service.v1.Admin.UpdateContest:output_type -> api.sastoj.admin.admin.service.v1.UpdateContestReply - 10, // 63: api.sastoj.admin.admin.service.v1.Admin.DeleteContest:output_type -> api.sastoj.admin.admin.service.v1.DeleteContestReply - 12, // 64: api.sastoj.admin.admin.service.v1.Admin.GetContest:output_type -> api.sastoj.admin.admin.service.v1.GetContestReply - 14, // 65: api.sastoj.admin.admin.service.v1.Admin.ListContest:output_type -> api.sastoj.admin.admin.service.v1.ListContestReply - 16, // 66: api.sastoj.admin.admin.service.v1.Admin.AddContestants:output_type -> api.sastoj.admin.admin.service.v1.AddContestantsReply - 18, // 67: api.sastoj.admin.admin.service.v1.Admin.ManualRanking:output_type -> api.sastoj.admin.admin.service.v1.ManualRankingReply - 20, // 68: api.sastoj.admin.admin.service.v1.Admin.GetRanking:output_type -> api.sastoj.admin.admin.service.v1.GetRankingReply - 22, // 69: api.sastoj.admin.admin.service.v1.Admin.CreateGroup:output_type -> api.sastoj.admin.admin.service.v1.CreateGroupReply - 24, // 70: api.sastoj.admin.admin.service.v1.Admin.UpdateGroup:output_type -> api.sastoj.admin.admin.service.v1.UpdateGroupReply - 26, // 71: api.sastoj.admin.admin.service.v1.Admin.DeleteGroup:output_type -> api.sastoj.admin.admin.service.v1.DeleteGroupReply - 28, // 72: api.sastoj.admin.admin.service.v1.Admin.GetGroup:output_type -> api.sastoj.admin.admin.service.v1.GetGroupReply - 30, // 73: api.sastoj.admin.admin.service.v1.Admin.ListGroup:output_type -> api.sastoj.admin.admin.service.v1.ListGroupReply - 34, // 74: api.sastoj.admin.admin.service.v1.Admin.SubmitJudge:output_type -> api.sastoj.admin.admin.service.v1.SubmitJudgeReply - 36, // 75: api.sastoj.admin.admin.service.v1.Admin.GetJudgableProblems:output_type -> api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply - 38, // 76: api.sastoj.admin.admin.service.v1.Admin.GetSubmissions:output_type -> api.sastoj.admin.admin.service.v1.GetSubmissionsReply - 52, // 77: api.sastoj.admin.admin.service.v1.Admin.UpdateAdjudicator:output_type -> api.sastoj.admin.admin.service.v1.UpdateAdjudicatorReply - 54, // 78: api.sastoj.admin.admin.service.v1.Admin.GetAdjudicator:output_type -> api.sastoj.admin.admin.service.v1.GetAdjudicatorReply - 40, // 79: api.sastoj.admin.admin.service.v1.Admin.CreateProblem:output_type -> api.sastoj.admin.admin.service.v1.CreateProblemReply - 42, // 80: api.sastoj.admin.admin.service.v1.Admin.UpdateProblem:output_type -> api.sastoj.admin.admin.service.v1.UpdateProblemReply - 44, // 81: api.sastoj.admin.admin.service.v1.Admin.DeleteProblem:output_type -> api.sastoj.admin.admin.service.v1.DeleteProblemReply - 48, // 82: api.sastoj.admin.admin.service.v1.Admin.ListProblem:output_type -> api.sastoj.admin.admin.service.v1.ListProblemReply - 46, // 83: api.sastoj.admin.admin.service.v1.Admin.GetProblem:output_type -> api.sastoj.admin.admin.service.v1.GetProblemReply - 50, // 84: api.sastoj.admin.admin.service.v1.Admin.GetProblemTypes:output_type -> api.sastoj.admin.admin.service.v1.GetProblemTypesReply - 56, // 85: api.sastoj.admin.admin.service.v1.Admin.CreateUser:output_type -> api.sastoj.admin.admin.service.v1.CreateUserReply - 58, // 86: api.sastoj.admin.admin.service.v1.Admin.BatchCreateUser:output_type -> api.sastoj.admin.admin.service.v1.BatchCreateUserReply - 60, // 87: api.sastoj.admin.admin.service.v1.Admin.UpdateUser:output_type -> api.sastoj.admin.admin.service.v1.UpdateUserReply - 62, // 88: api.sastoj.admin.admin.service.v1.Admin.DeleteUser:output_type -> api.sastoj.admin.admin.service.v1.DeleteUserReply - 64, // 89: api.sastoj.admin.admin.service.v1.Admin.GetUser:output_type -> api.sastoj.admin.admin.service.v1.GetUserReply - 66, // 90: api.sastoj.admin.admin.service.v1.Admin.ListUser:output_type -> api.sastoj.admin.admin.service.v1.ListUserReply + 2, // 29: api.sastoj.admin.admin.service.v1.Admin.DeleteCasesByProblemId:input_type -> api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdRequest + 4, // 30: api.sastoj.admin.admin.service.v1.Admin.CreateContest:input_type -> api.sastoj.admin.admin.service.v1.CreateContestRequest + 6, // 31: api.sastoj.admin.admin.service.v1.Admin.UpdateContest:input_type -> api.sastoj.admin.admin.service.v1.UpdateContestRequest + 8, // 32: api.sastoj.admin.admin.service.v1.Admin.DeleteContest:input_type -> api.sastoj.admin.admin.service.v1.DeleteContestRequest + 10, // 33: api.sastoj.admin.admin.service.v1.Admin.GetContest:input_type -> api.sastoj.admin.admin.service.v1.GetContestRequest + 12, // 34: api.sastoj.admin.admin.service.v1.Admin.ListContest:input_type -> api.sastoj.admin.admin.service.v1.ListContestRequest + 14, // 35: api.sastoj.admin.admin.service.v1.Admin.AddContestants:input_type -> api.sastoj.admin.admin.service.v1.AddContestantsRequest + 16, // 36: api.sastoj.admin.admin.service.v1.Admin.ManualRanking:input_type -> api.sastoj.admin.admin.service.v1.ManualRankingRequest + 18, // 37: api.sastoj.admin.admin.service.v1.Admin.GetRanking:input_type -> api.sastoj.admin.admin.service.v1.GetRankingRequest + 20, // 38: api.sastoj.admin.admin.service.v1.Admin.CreateGroup:input_type -> api.sastoj.admin.admin.service.v1.CreateGroupRequest + 22, // 39: api.sastoj.admin.admin.service.v1.Admin.UpdateGroup:input_type -> api.sastoj.admin.admin.service.v1.UpdateGroupRequest + 24, // 40: api.sastoj.admin.admin.service.v1.Admin.DeleteGroup:input_type -> api.sastoj.admin.admin.service.v1.DeleteGroupRequest + 26, // 41: api.sastoj.admin.admin.service.v1.Admin.GetGroup:input_type -> api.sastoj.admin.admin.service.v1.GetGroupRequest + 28, // 42: api.sastoj.admin.admin.service.v1.Admin.ListGroup:input_type -> api.sastoj.admin.admin.service.v1.ListGroupRequest + 32, // 43: api.sastoj.admin.admin.service.v1.Admin.SubmitJudge:input_type -> api.sastoj.admin.admin.service.v1.SubmitJudgeRequest + 34, // 44: api.sastoj.admin.admin.service.v1.Admin.GetJudgableProblems:input_type -> api.sastoj.admin.admin.service.v1.GetJudgableProblemsRequest + 36, // 45: api.sastoj.admin.admin.service.v1.Admin.GetSubmissions:input_type -> api.sastoj.admin.admin.service.v1.GetSubmissionsRequest + 50, // 46: api.sastoj.admin.admin.service.v1.Admin.UpdateAdjudicator:input_type -> api.sastoj.admin.admin.service.v1.UpdateAdjudicatorRequest + 52, // 47: api.sastoj.admin.admin.service.v1.Admin.GetAdjudicator:input_type -> api.sastoj.admin.admin.service.v1.GetAdjudicatorRequest + 38, // 48: api.sastoj.admin.admin.service.v1.Admin.CreateProblem:input_type -> api.sastoj.admin.admin.service.v1.CreateProblemRequest + 40, // 49: api.sastoj.admin.admin.service.v1.Admin.UpdateProblem:input_type -> api.sastoj.admin.admin.service.v1.UpdateProblemRequest + 42, // 50: api.sastoj.admin.admin.service.v1.Admin.DeleteProblem:input_type -> api.sastoj.admin.admin.service.v1.DeleteProblemRequest + 46, // 51: api.sastoj.admin.admin.service.v1.Admin.ListProblem:input_type -> api.sastoj.admin.admin.service.v1.ListProblemRequest + 44, // 52: api.sastoj.admin.admin.service.v1.Admin.GetProblem:input_type -> api.sastoj.admin.admin.service.v1.GetProblemRequest + 48, // 53: api.sastoj.admin.admin.service.v1.Admin.GetProblemTypes:input_type -> api.sastoj.admin.admin.service.v1.GetProblemTypesRequest + 54, // 54: api.sastoj.admin.admin.service.v1.Admin.CreateUser:input_type -> api.sastoj.admin.admin.service.v1.CreateUserRequest + 56, // 55: api.sastoj.admin.admin.service.v1.Admin.BatchCreateUser:input_type -> api.sastoj.admin.admin.service.v1.BatchCreateUserRequest + 58, // 56: api.sastoj.admin.admin.service.v1.Admin.UpdateUser:input_type -> api.sastoj.admin.admin.service.v1.UpdateUserRequest + 60, // 57: api.sastoj.admin.admin.service.v1.Admin.DeleteUser:input_type -> api.sastoj.admin.admin.service.v1.DeleteUserRequest + 62, // 58: api.sastoj.admin.admin.service.v1.Admin.GetUser:input_type -> api.sastoj.admin.admin.service.v1.GetUserRequest + 64, // 59: api.sastoj.admin.admin.service.v1.Admin.ListUser:input_type -> api.sastoj.admin.admin.service.v1.ListUserRequest + 3, // 60: api.sastoj.admin.admin.service.v1.Admin.DeleteCasesByProblemId:output_type -> api.sastoj.admin.admin.service.v1.DeleteCasesByProblemIdReply + 5, // 61: api.sastoj.admin.admin.service.v1.Admin.CreateContest:output_type -> api.sastoj.admin.admin.service.v1.CreateContestReply + 7, // 62: api.sastoj.admin.admin.service.v1.Admin.UpdateContest:output_type -> api.sastoj.admin.admin.service.v1.UpdateContestReply + 9, // 63: api.sastoj.admin.admin.service.v1.Admin.DeleteContest:output_type -> api.sastoj.admin.admin.service.v1.DeleteContestReply + 11, // 64: api.sastoj.admin.admin.service.v1.Admin.GetContest:output_type -> api.sastoj.admin.admin.service.v1.GetContestReply + 13, // 65: api.sastoj.admin.admin.service.v1.Admin.ListContest:output_type -> api.sastoj.admin.admin.service.v1.ListContestReply + 15, // 66: api.sastoj.admin.admin.service.v1.Admin.AddContestants:output_type -> api.sastoj.admin.admin.service.v1.AddContestantsReply + 17, // 67: api.sastoj.admin.admin.service.v1.Admin.ManualRanking:output_type -> api.sastoj.admin.admin.service.v1.ManualRankingReply + 19, // 68: api.sastoj.admin.admin.service.v1.Admin.GetRanking:output_type -> api.sastoj.admin.admin.service.v1.GetRankingReply + 21, // 69: api.sastoj.admin.admin.service.v1.Admin.CreateGroup:output_type -> api.sastoj.admin.admin.service.v1.CreateGroupReply + 23, // 70: api.sastoj.admin.admin.service.v1.Admin.UpdateGroup:output_type -> api.sastoj.admin.admin.service.v1.UpdateGroupReply + 25, // 71: api.sastoj.admin.admin.service.v1.Admin.DeleteGroup:output_type -> api.sastoj.admin.admin.service.v1.DeleteGroupReply + 27, // 72: api.sastoj.admin.admin.service.v1.Admin.GetGroup:output_type -> api.sastoj.admin.admin.service.v1.GetGroupReply + 29, // 73: api.sastoj.admin.admin.service.v1.Admin.ListGroup:output_type -> api.sastoj.admin.admin.service.v1.ListGroupReply + 33, // 74: api.sastoj.admin.admin.service.v1.Admin.SubmitJudge:output_type -> api.sastoj.admin.admin.service.v1.SubmitJudgeReply + 35, // 75: api.sastoj.admin.admin.service.v1.Admin.GetJudgableProblems:output_type -> api.sastoj.admin.admin.service.v1.GetJudgableProblemsReply + 37, // 76: api.sastoj.admin.admin.service.v1.Admin.GetSubmissions:output_type -> api.sastoj.admin.admin.service.v1.GetSubmissionsReply + 51, // 77: api.sastoj.admin.admin.service.v1.Admin.UpdateAdjudicator:output_type -> api.sastoj.admin.admin.service.v1.UpdateAdjudicatorReply + 53, // 78: api.sastoj.admin.admin.service.v1.Admin.GetAdjudicator:output_type -> api.sastoj.admin.admin.service.v1.GetAdjudicatorReply + 39, // 79: api.sastoj.admin.admin.service.v1.Admin.CreateProblem:output_type -> api.sastoj.admin.admin.service.v1.CreateProblemReply + 41, // 80: api.sastoj.admin.admin.service.v1.Admin.UpdateProblem:output_type -> api.sastoj.admin.admin.service.v1.UpdateProblemReply + 43, // 81: api.sastoj.admin.admin.service.v1.Admin.DeleteProblem:output_type -> api.sastoj.admin.admin.service.v1.DeleteProblemReply + 47, // 82: api.sastoj.admin.admin.service.v1.Admin.ListProblem:output_type -> api.sastoj.admin.admin.service.v1.ListProblemReply + 45, // 83: api.sastoj.admin.admin.service.v1.Admin.GetProblem:output_type -> api.sastoj.admin.admin.service.v1.GetProblemReply + 49, // 84: api.sastoj.admin.admin.service.v1.Admin.GetProblemTypes:output_type -> api.sastoj.admin.admin.service.v1.GetProblemTypesReply + 55, // 85: api.sastoj.admin.admin.service.v1.Admin.CreateUser:output_type -> api.sastoj.admin.admin.service.v1.CreateUserReply + 57, // 86: api.sastoj.admin.admin.service.v1.Admin.BatchCreateUser:output_type -> api.sastoj.admin.admin.service.v1.BatchCreateUserReply + 59, // 87: api.sastoj.admin.admin.service.v1.Admin.UpdateUser:output_type -> api.sastoj.admin.admin.service.v1.UpdateUserReply + 61, // 88: api.sastoj.admin.admin.service.v1.Admin.DeleteUser:output_type -> api.sastoj.admin.admin.service.v1.DeleteUserReply + 63, // 89: api.sastoj.admin.admin.service.v1.Admin.GetUser:output_type -> api.sastoj.admin.admin.service.v1.GetUserReply + 65, // 90: api.sastoj.admin.admin.service.v1.Admin.ListUser:output_type -> api.sastoj.admin.admin.service.v1.ListUserReply 60, // [60:91] is the sub-list for method output_type 29, // [29:60] is the sub-list for method input_type 29, // [29:29] is the sub-list for extension type_name @@ -5810,18 +5695,6 @@ func file_admin_admin_service_v1_admin_proto_init() { } if !protoimpl.UnsafeEnabled { file_admin_admin_service_v1_admin_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Case); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_admin_admin_service_v1_admin_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*DeleteCasesByProblemIdRequest); i { case 0: return &v.state @@ -5833,7 +5706,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[2].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*DeleteCasesByProblemIdReply); i { case 0: return &v.state @@ -5845,7 +5718,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[3].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*CreateContestRequest); i { case 0: return &v.state @@ -5857,7 +5730,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[4].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*CreateContestReply); i { case 0: return &v.state @@ -5869,7 +5742,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[5].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*UpdateContestRequest); i { case 0: return &v.state @@ -5881,7 +5754,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[6].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*UpdateContestReply); i { case 0: return &v.state @@ -5893,7 +5766,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[7].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*DeleteContestRequest); i { case 0: return &v.state @@ -5905,7 +5778,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[8].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*DeleteContestReply); i { case 0: return &v.state @@ -5917,7 +5790,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[9].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*GetContestRequest); i { case 0: return &v.state @@ -5929,7 +5802,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[10].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*GetContestReply); i { case 0: return &v.state @@ -5941,7 +5814,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[11].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*ListContestRequest); i { case 0: return &v.state @@ -5953,7 +5826,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[12].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*ListContestReply); i { case 0: return &v.state @@ -5965,7 +5838,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[13].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*AddContestantsRequest); i { case 0: return &v.state @@ -5977,7 +5850,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[14].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*AddContestantsReply); i { case 0: return &v.state @@ -5989,7 +5862,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[15].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*ManualRankingRequest); i { case 0: return &v.state @@ -6001,7 +5874,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[16].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ManualRankingReply); i { case 0: return &v.state @@ -6013,7 +5886,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[17].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*GetRankingRequest); i { case 0: return &v.state @@ -6025,7 +5898,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[18].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*GetRankingReply); i { case 0: return &v.state @@ -6037,7 +5910,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[19].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*CreateGroupRequest); i { case 0: return &v.state @@ -6049,7 +5922,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[20].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*CreateGroupReply); i { case 0: return &v.state @@ -6061,7 +5934,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[21].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*UpdateGroupRequest); i { case 0: return &v.state @@ -6073,7 +5946,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[22].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*UpdateGroupReply); i { case 0: return &v.state @@ -6085,7 +5958,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[23].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*DeleteGroupRequest); i { case 0: return &v.state @@ -6097,7 +5970,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[24].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*DeleteGroupReply); i { case 0: return &v.state @@ -6109,7 +5982,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[25].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*GetGroupRequest); i { case 0: return &v.state @@ -6121,7 +5994,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[26].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*GetGroupReply); i { case 0: return &v.state @@ -6133,7 +6006,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[27].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*ListGroupRequest); i { case 0: return &v.state @@ -6145,7 +6018,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[28].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*ListGroupReply); i { case 0: return &v.state @@ -6157,7 +6030,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[29].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*Problem); i { case 0: return &v.state @@ -6169,7 +6042,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[30].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*Submission); i { case 0: return &v.state @@ -6181,7 +6054,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[31].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*SubmitJudgeRequest); i { case 0: return &v.state @@ -6193,7 +6066,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[32].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*SubmitJudgeReply); i { case 0: return &v.state @@ -6205,7 +6078,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[33].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*GetJudgableProblemsRequest); i { case 0: return &v.state @@ -6217,7 +6090,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[34].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*GetJudgableProblemsReply); i { case 0: return &v.state @@ -6229,7 +6102,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[35].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*GetSubmissionsRequest); i { case 0: return &v.state @@ -6241,7 +6114,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[36].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*GetSubmissionsReply); i { case 0: return &v.state @@ -6253,7 +6126,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[37].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*CreateProblemRequest); i { case 0: return &v.state @@ -6265,7 +6138,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[38].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*CreateProblemReply); i { case 0: return &v.state @@ -6277,7 +6150,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[39].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*UpdateProblemRequest); i { case 0: return &v.state @@ -6289,7 +6162,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[40].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*UpdateProblemReply); i { case 0: return &v.state @@ -6301,7 +6174,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[41].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*DeleteProblemRequest); i { case 0: return &v.state @@ -6313,7 +6186,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[42].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*DeleteProblemReply); i { case 0: return &v.state @@ -6325,7 +6198,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[43].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*GetProblemRequest); i { case 0: return &v.state @@ -6337,7 +6210,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[44].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*GetProblemReply); i { case 0: return &v.state @@ -6349,7 +6222,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[45].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*ListProblemRequest); i { case 0: return &v.state @@ -6361,7 +6234,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[46].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[45].Exporter = func(v any, i int) any { switch v := v.(*ListProblemReply); i { case 0: return &v.state @@ -6373,7 +6246,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[47].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*GetProblemTypesRequest); i { case 0: return &v.state @@ -6385,7 +6258,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[48].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*GetProblemTypesReply); i { case 0: return &v.state @@ -6397,7 +6270,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[49].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*UpdateAdjudicatorRequest); i { case 0: return &v.state @@ -6409,7 +6282,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[50].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*UpdateAdjudicatorReply); i { case 0: return &v.state @@ -6421,7 +6294,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[51].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*GetAdjudicatorRequest); i { case 0: return &v.state @@ -6433,7 +6306,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[52].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*GetAdjudicatorReply); i { case 0: return &v.state @@ -6445,7 +6318,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[53].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*CreateUserRequest); i { case 0: return &v.state @@ -6457,7 +6330,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[54].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*CreateUserReply); i { case 0: return &v.state @@ -6469,7 +6342,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[55].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*BatchCreateUserRequest); i { case 0: return &v.state @@ -6481,7 +6354,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[56].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*BatchCreateUserReply); i { case 0: return &v.state @@ -6493,7 +6366,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[57].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*UpdateUserRequest); i { case 0: return &v.state @@ -6505,7 +6378,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[58].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*UpdateUserReply); i { case 0: return &v.state @@ -6517,7 +6390,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[59].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*DeleteUserRequest); i { case 0: return &v.state @@ -6529,7 +6402,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[60].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*DeleteUserReply); i { case 0: return &v.state @@ -6541,7 +6414,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[61].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*GetUserRequest); i { case 0: return &v.state @@ -6553,7 +6426,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[62].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*GetUserReply); i { case 0: return &v.state @@ -6565,7 +6438,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[63].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*ListUserRequest); i { case 0: return &v.state @@ -6577,7 +6450,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[64].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*ListUserReply); i { case 0: return &v.state @@ -6589,7 +6462,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[65].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*ListContestReply_Contest); i { case 0: return &v.state @@ -6601,7 +6474,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[66].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*GetRankingReply_UserResult); i { case 0: return &v.state @@ -6613,7 +6486,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[67].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*GetRankingReply_UserResult_ProblemResult); i { case 0: return &v.state @@ -6625,7 +6498,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[68].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*ListGroupReply_Group); i { case 0: return &v.state @@ -6637,7 +6510,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[69].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*ListProblemReply_Problem); i { case 0: return &v.state @@ -6649,7 +6522,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[70].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*GetProblemTypesReply_ProblemType); i { case 0: return &v.state @@ -6661,7 +6534,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[71].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*GetAdjudicatorReply_Group); i { case 0: return &v.state @@ -6673,7 +6546,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[72].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*BatchCreateUserReply_User); i { case 0: return &v.state @@ -6685,7 +6558,7 @@ func file_admin_admin_service_v1_admin_proto_init() { return nil } } - file_admin_admin_service_v1_admin_proto_msgTypes[73].Exporter = func(v any, i int) any { + file_admin_admin_service_v1_admin_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*ListUserReply_User); i { case 0: return &v.state @@ -6704,7 +6577,7 @@ func file_admin_admin_service_v1_admin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_admin_admin_service_v1_admin_proto_rawDesc, NumEnums: 2, - NumMessages: 74, + NumMessages: 73, NumExtensions: 0, NumServices: 1, }, diff --git a/api/sastoj/admin/admin/service/v1/admin.pb.validate.go b/api/sastoj/admin/admin/service/v1/admin.pb.validate.go index ed8d5ad..784cfee 100644 --- a/api/sastoj/admin/admin/service/v1/admin.pb.validate.go +++ b/api/sastoj/admin/admin/service/v1/admin.pb.validate.go @@ -35,112 +35,6 @@ var ( _ = sort.Sort ) -// Validate checks the field values on Case with the rules defined in the proto -// definition for this message. If any rules are violated, the first error -// encountered is returned, or nil if there are no violations. -func (m *Case) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Case with the rules defined in the -// proto definition for this message. If any rules are violated, the result is -// a list of violation errors wrapped in CaseMultiError, or nil if none found. -func (m *Case) ValidateAll() error { - return m.validate(true) -} - -func (m *Case) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Id - - // no validation rules for Point - - // no validation rules for Index - - // no validation rules for IsAuto - - if len(errors) > 0 { - return CaseMultiError(errors) - } - - return nil -} - -// CaseMultiError is an error wrapping multiple validation errors returned by -// Case.ValidateAll() if the designated constraints aren't met. -type CaseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CaseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CaseMultiError) AllErrors() []error { return m } - -// CaseValidationError is the validation error returned by Case.Validate if the -// designated constraints aren't met. -type CaseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e CaseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e CaseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e CaseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e CaseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e CaseValidationError) ErrorName() string { return "CaseValidationError" } - -// Error satisfies the builtin error interface -func (e CaseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sCase.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = CaseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = CaseValidationError{} - // Validate checks the field values on DeleteCasesByProblemIdRequest with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -3519,7 +3413,7 @@ func (m *Problem) validate(all bool) error { // no validation rules for Content - // no validation rules for Point + // no validation rules for Score // no validation rules for ContestId @@ -3527,8 +3421,6 @@ func (m *Problem) validate(all bool) error { // no validation rules for Index - // no validation rules for Config - if len(errors) > 0 { return ProblemMultiError(errors) } @@ -4456,7 +4348,7 @@ func (m *CreateProblemRequest) validate(all bool) error { // no validation rules for Content - // no validation rules for Point + // no validation rules for Score // no validation rules for ContestId @@ -4682,7 +4574,7 @@ func (m *UpdateProblemRequest) validate(all bool) error { // no validation rules for Content - // no validation rules for Point + // no validation rules for Score // no validation rules for ContestId @@ -4690,10 +4582,6 @@ func (m *UpdateProblemRequest) validate(all bool) error { // no validation rules for Index - // no validation rules for Config - - // no validation rules for OwnerId - // no validation rules for Visibility if len(errors) > 0 { @@ -5222,7 +5110,7 @@ func (m *GetProblemReply) validate(all bool) error { // no validation rules for Content - // no validation rules for Point + // no validation rules for Score // no validation rules for ContestId @@ -8192,7 +8080,7 @@ func (m *ListProblemReply_Problem) validate(all bool) error { // no validation rules for Content - // no validation rules for Point + // no validation rules for Score // no validation rules for ContestId @@ -8200,8 +8088,6 @@ func (m *ListProblemReply_Problem) validate(all bool) error { // no validation rules for Index - // no validation rules for Config - // no validation rules for OwnerId // no validation rules for Visibility diff --git a/api/sastoj/admin/admin/service/v1/admin.proto b/api/sastoj/admin/admin/service/v1/admin.proto index 1b4357a..d349ace 100644 --- a/api/sastoj/admin/admin/service/v1/admin.proto +++ b/api/sastoj/admin/admin/service/v1/admin.proto @@ -200,12 +200,6 @@ enum ErrorReason { } -message Case { - int64 id = 1; - int32 point = 2; - int32 index = 3; - bool is_auto = 4; -} message DeleteCasesByProblemIdRequest{ int64 problem_id = 1; } @@ -305,7 +299,6 @@ message ManualRankingReply { message GetRankingRequest { int64 contest_id = 1; } - message GetRankingReply { message UserResult { message ProblemResult { @@ -334,6 +327,7 @@ message CreateGroupRequest { message CreateGroupReply { int64 id = 1; } + message UpdateGroupRequest { int64 id = 1; string name = 2; @@ -345,12 +339,14 @@ message UpdateGroupRequest { message UpdateGroupReply { bool success = 1; } + message DeleteGroupRequest { int64 id = 1; } message DeleteGroupReply { bool success = 1; } + message GetGroupRequest { int64 id = 1; } @@ -362,6 +358,7 @@ message GetGroupReply { repeated int64 contests = 5; repeated int64 problems = 6; } + message ListGroupRequest { int64 size = 1 [(validate.rules).int64 = {gt: -1}]; int64 current = 2 [(validate.rules).int64 = {gt: -1}]; @@ -382,12 +379,12 @@ message Problem { int64 id = 1; string title = 2; string content = 3; - int32 point = 4; + int32 score = 4; int64 contest_id = 5; int32 case_version = 6; int32 index = 7; - string config = 8; } + message Submission { int64 id = 1; string code = 2; @@ -401,11 +398,13 @@ message SubmitJudgeRequest { } message SubmitJudgeReply { } + message GetJudgableProblemsRequest { } message GetJudgableProblemsReply { repeated Problem results = 1; } + message GetSubmissionsRequest{ int64 problem_id = 1; int32 status = 2; @@ -418,11 +417,11 @@ message CreateProblemRequest { int64 type_id = 1; string title = 2; string content = 3; - int32 point =4; - int64 contestId = 5; + int32 score = 4; + int64 contest_id = 5; int32 index = 6; string config = 7; - int64 ownerId = 8; + int64 owner_id = 8; Visibility visibility = 9; } @@ -441,13 +440,11 @@ message UpdateProblemRequest { int64 type_id = 2; string title = 3; string content = 4; - int32 point = 5; - int64 contestId = 6; - int32 caseVersion = 7; + int32 score = 5; + int64 contest_id = 6; + int32 case_version = 7; int32 index = 8; - string config = 9; - int64 ownerId = 10; - Visibility visibility = 11; + Visibility visibility = 9; } message UpdateProblemReply { bool success = 1; @@ -468,12 +465,12 @@ message GetProblemReply { int64 type_id = 2; string title = 3; string content = 4; - int32 point = 5; - int64 contestId = 6; - int32 caseVersion = 7; + int32 score = 5; + int64 contest_id = 6; + int32 case_version = 7; int32 index = 8; string config = 9; - int64 ownerId = 10; + int64 owner_id = 10; Visibility visibility = 11; } message ListProblemRequest { @@ -486,12 +483,11 @@ message ListProblemReply { int64 type_id = 2; string title = 3; string content = 4; - int32 point = 5; - int64 contestId = 6; - int32 caseVersion = 7; + int32 score = 5; + int64 contest_id = 6; + int32 case_version = 7; int32 index = 8; - string config = 9; - int64 ownerId = 10; + int64 owner_id = 10; Visibility visibility = 11; } int32 currency = 2; diff --git a/api/sastoj/user/contest/service/v1/contest.pb.go b/api/sastoj/user/contest/service/v1/contest.pb.go index befb29e..d1776e9 100644 --- a/api/sastoj/user/contest/service/v1/contest.pb.go +++ b/api/sastoj/user/contest/service/v1/contest.pb.go @@ -1292,11 +1292,11 @@ type UpdateSubmissionRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SubmissionId string `protobuf:"bytes,1,opt,name=submission_id,json=submissionId,proto3" json:"submission_id,omitempty"` - Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` - Point *int32 `protobuf:"varint,3,opt,name=point,proto3,oneof" json:"point,omitempty"` - TotalTime *int32 `protobuf:"varint,4,opt,name=total_time,json=totalTime,proto3,oneof" json:"total_time,omitempty"` - MaxMemory *int32 `protobuf:"varint,5,opt,name=max_memory,json=maxMemory,proto3,oneof" json:"max_memory,omitempty"` + SubmissionId string `protobuf:"bytes,1,opt,name=submission_id,json=submissionId,proto3" json:"submission_id,omitempty"` + Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` + Point *int32 `protobuf:"varint,3,opt,name=point,proto3,oneof" json:"point,omitempty"` + TotalTime *uint64 `protobuf:"varint,4,opt,name=total_time,json=totalTime,proto3,oneof" json:"total_time,omitempty"` + MaxMemory *uint64 `protobuf:"varint,5,opt,name=max_memory,json=maxMemory,proto3,oneof" json:"max_memory,omitempty"` } func (x *UpdateSubmissionRequest) Reset() { @@ -1352,14 +1352,14 @@ func (x *UpdateSubmissionRequest) GetPoint() int32 { return 0 } -func (x *UpdateSubmissionRequest) GetTotalTime() int32 { +func (x *UpdateSubmissionRequest) GetTotalTime() uint64 { if x != nil && x.TotalTime != nil { return *x.TotalTime } return 0 } -func (x *UpdateSubmissionRequest) GetMaxMemory() int32 { +func (x *UpdateSubmissionRequest) GetMaxMemory() uint64 { if x != nil && x.MaxMemory != nil { return *x.MaxMemory } @@ -2027,7 +2027,7 @@ type ListRankingReply_User struct { Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` - Score int32 `protobuf:"varint,3,opt,name=score,proto3" json:"score,omitempty"` + Point int32 `protobuf:"varint,3,opt,name=point,proto3" json:"point,omitempty"` Rank int32 `protobuf:"varint,4,opt,name=rank,proto3" json:"rank,omitempty"` } @@ -2077,9 +2077,9 @@ func (x *ListRankingReply_User) GetUsername() string { return "" } -func (x *ListRankingReply_User) GetScore() int32 { +func (x *ListRankingReply_User) GetPoint() int32 { if x != nil { - return x.Score + return x.Point } return 0 } @@ -2293,8 +2293,8 @@ var file_user_contest_service_v1_contest_proto_rawDesc = []byte{ 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x5c, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x22, 0xe1, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, @@ -2304,9 +2304,9 @@ var file_user_contest_service_v1_contest_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x09, + 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, diff --git a/api/sastoj/user/contest/service/v1/contest.pb.validate.go b/api/sastoj/user/contest/service/v1/contest.pb.validate.go index 34466f6..ebc3a40 100644 --- a/api/sastoj/user/contest/service/v1/contest.pb.validate.go +++ b/api/sastoj/user/contest/service/v1/contest.pb.validate.go @@ -3879,7 +3879,7 @@ func (m *ListRankingReply_User) validate(all bool) error { // no validation rules for Username - // no validation rules for Score + // no validation rules for Point // no validation rules for Rank diff --git a/api/sastoj/user/contest/service/v1/contest.proto b/api/sastoj/user/contest/service/v1/contest.proto index 71ff926..d00aacc 100644 --- a/api/sastoj/user/contest/service/v1/contest.proto +++ b/api/sastoj/user/contest/service/v1/contest.proto @@ -215,7 +215,7 @@ message ListRankingReply { message User { int64 id = 1; string username = 2; - int32 score = 3; + int32 point = 3; int32 rank = 4; } repeated User users = 1; @@ -225,8 +225,8 @@ message UpdateSubmissionRequest { string submission_id = 1; int32 status = 2; optional int32 point = 3; - optional int32 total_time = 4; - optional int32 max_memory = 5; + optional uint64 total_time = 4; + optional uint64 max_memory = 5; } message UpdateSubmissionReply { bool success = 1; diff --git a/app/admin/admin/internal/biz/adjudicator.go b/app/admin/admin/internal/biz/adjudicator.go index 90e0c34..ac4a9a6 100644 --- a/app/admin/admin/internal/biz/adjudicator.go +++ b/app/admin/admin/internal/biz/adjudicator.go @@ -13,46 +13,46 @@ type Adjudicator struct { Groups []*ent.Group } -// AdjudicatorRepo is a Greater repo. +// AdjudicatorRepo is an Adjudicator repository. type AdjudicatorRepo interface { - Save(ctx context.Context, groupIds []int64) error - Update(ctx context.Context, groupIds []int64) error - FindByID(ctx context.Context, problemId int64) (*Adjudicator, error) - FindProblemById(ctx context.Context, problemId int64) (*ent.Problem, error) + Save(ctx context.Context, groupIDs []int64) error + Update(ctx context.Context, groupIDs []int64) error + FindByID(ctx context.Context, problemID int64) (*Adjudicator, error) + FindProblemByID(ctx context.Context, problemID int64) (*ent.Problem, error) } -// AdjudicatorUsecase is a Adjudicator usecase. +// AdjudicatorUsecase is an Adjudicator usecase. type AdjudicatorUsecase struct { repo AdjudicatorRepo log *log.Helper } -// NewAdjudicatorUsecase new a Adjudicator usecase. +// NewAdjudicatorUsecase new an Adjudicator usecase. func NewAdjudicatorUsecase(repo AdjudicatorRepo, logger log.Logger) *AdjudicatorUsecase { return &AdjudicatorUsecase{repo: repo, log: log.NewHelper(logger)} } -// UpdateAdjudicator creates a Adjudicator, and returns the new Adjudicator. -func (uc *AdjudicatorUsecase) UpdateAdjudicator(ctx context.Context, problemId int64, groupIds []int64) error { - uc.log.WithContext(ctx).Infof("CreateAdjudicator: %v") - _, err := uc.repo.FindProblemById(ctx, problemId) +// UpdateAdjudicator creates an Adjudicator, and returns the new Adjudicator. +func (uc *AdjudicatorUsecase) UpdateAdjudicator(ctx context.Context, problemID int64, groupIDs []int64) error { + uc.log.WithContext(ctx).Infof("CreateAdjudicator: %v", groupIDs) + _, err := uc.repo.FindProblemByID(ctx, problemID) if err != nil { var notFoundError *ent.NotFoundError if errors.As(err, ¬FoundError) { - //如何类型相同则说明没有该id的problem - return errors.New("not find the specified Id of problem") + // 如何类型相同则说明没有该id的problem + return errors.New("not find the specified ID of problem") } return err } - adjudicatorGroups, err := uc.repo.FindByID(ctx, problemId) + adjudicatorGroups, err := uc.repo.FindByID(ctx, problemID) if len(adjudicatorGroups.Groups) == 0 { - return uc.repo.Save(ctx, groupIds) + return uc.repo.Save(ctx, groupIDs) } else { - return uc.repo.Update(ctx, groupIds) + return uc.repo.Update(ctx, groupIDs) } } -func (uc *AdjudicatorUsecase) GetAdjudicator(ctx context.Context, problemId int64) (*Adjudicator, error) { - return uc.repo.FindByID(ctx, problemId) +func (uc *AdjudicatorUsecase) GetAdjudicator(ctx context.Context, problemID int64) (*Adjudicator, error) { + return uc.repo.FindByID(ctx, problemID) } diff --git a/app/admin/admin/internal/biz/case.go b/app/admin/admin/internal/biz/case.go index bb1b10f..ef01b15 100644 --- a/app/admin/admin/internal/biz/case.go +++ b/app/admin/admin/internal/biz/case.go @@ -8,8 +8,8 @@ import ( ) type Case struct { - Id int64 - ProblemId int64 + ID int64 + ProblemID int64 Point int32 Index int32 IsAuto bool @@ -28,14 +28,14 @@ func NewCaseUsecase(repo CaseRepo, logger log.Logger) *CaseUsecase { return &CaseUsecase{repo: repo, log: log.NewHelper(logger)} } -func (uc *CaseUsecase) DeleteCasesByProblemId(ctx context.Context, pi int64) error { - uc.log.WithContext(ctx).Infof("DeleteCasesByProblemId: %v", pi) +func (uc *CaseUsecase) DeleteCasesByProblemID(ctx context.Context, pi int64) error { + uc.log.WithContext(ctx).Infof("DeleteCasesByProblemID: %v", pi) return nil } -func (uc *CaseUsecase) UploadCases(ctx context.Context, problemId int64, casesFile multipart.File, filename string, casesType string) error { +func (uc *CaseUsecase) UploadCases(ctx context.Context, problemID int64, casesFile multipart.File, filename string, casesType string) error { uc.log.WithContext(ctx).Infof("start uploading %v from %v", filename, casesType) - err := uc.repo.UploadCasesFile(problemId, casesFile, filename, casesType) + err := uc.repo.UploadCasesFile(problemID, casesFile, filename, casesType) if err != nil { return err } diff --git a/app/admin/admin/internal/biz/contest.go b/app/admin/admin/internal/biz/contest.go index b6d3f76..a383cc2 100644 --- a/app/admin/admin/internal/biz/contest.go +++ b/app/admin/admin/internal/biz/contest.go @@ -11,7 +11,7 @@ const ContestTypeIOI = 1 const ContestTypeACM = 2 type Contest struct { - Id int64 + ID int64 Title string Description string Status int32 @@ -29,7 +29,7 @@ type ContestRepo interface { Delete(context.Context, int64) error FindByID(context.Context, int64) (*Contest, error) ListPages(ctx context.Context, current int64, size int64) ([]*Contest, error) - AddContestants(ctx context.Context, contestId int64, groupId int64, role int32) error + AddContestants(ctx context.Context, contestID int64, groupID int64, role int32) error GetRacingContests(ctx context.Context) ([]*Contest, error) } @@ -57,13 +57,13 @@ func (uc *ContestUsecase) FindContest(ctx context.Context, id int64) (*Contest, func (uc *ContestUsecase) ListContest(ctx context.Context, current int64, size int64) ([]*Contest, error) { return uc.repo.ListPages(ctx, current, size) } -func (uc *ContestUsecase) AddContestants(ctx context.Context, contestId int64, groupId int64, role int32) error { - _, err := uc.repo.FindByID(ctx, contestId) +func (uc *ContestUsecase) AddContestants(ctx context.Context, contestID int64, groupID int64, role int32) error { + _, err := uc.repo.FindByID(ctx, contestID) if err != nil { return err } - return uc.repo.AddContestants(ctx, contestId, groupId, role) + return uc.repo.AddContestants(ctx, contestID, groupID, role) } func (uc *ContestUsecase) GetRacingContests(ctx context.Context) ([]*Contest, error) { return uc.repo.GetRacingContests(ctx) diff --git a/app/admin/admin/internal/biz/group.go b/app/admin/admin/internal/biz/group.go index 229df07..eba2ff3 100644 --- a/app/admin/admin/internal/biz/group.go +++ b/app/admin/admin/internal/biz/group.go @@ -7,7 +7,7 @@ import ( ) type Group struct { - Id int64 + ID int64 Name string } @@ -16,7 +16,7 @@ type GroupRepo interface { Update(context.Context, *Group) (*int64, error) FindByID(context.Context, int64) (*Group, error) ListByPage(ctx context.Context, current int64, size int64) ([]*Group, error) - DeleteById(context.Context, int64) error + DeleteByID(context.Context, int64) error } type GroupUsecase struct { @@ -38,8 +38,8 @@ func (uc *GroupUsecase) CreateGroup(ctx context.Context, g *Group) (*Group, erro } func (uc *GroupUsecase) GetGroup(ctx context.Context, g *Group) (*Group, error) { - uc.log.WithContext(ctx).Infof("GetGroup: %v", g.Id) - out, err := uc.repo.FindByID(ctx, g.Id) + uc.log.WithContext(ctx).Infof("GetGroup: %v", g.ID) + out, err := uc.repo.FindByID(ctx, g.ID) if err != nil { return nil, err } @@ -47,7 +47,7 @@ func (uc *GroupUsecase) GetGroup(ctx context.Context, g *Group) (*Group, error) } func (uc *GroupUsecase) UpdateGroup(ctx context.Context, g *Group) (bool, error) { - uc.log.WithContext(ctx).Infof("UpdateGroup: %v", g.Id) + uc.log.WithContext(ctx).Infof("UpdateGroup: %v", g.ID) rv, err := uc.repo.Update(ctx, g) if err != nil || *rv == 0 { return false, err @@ -66,7 +66,7 @@ func (uc *GroupUsecase) ListGroup(ctx context.Context, current int64, size int64 func (uc *GroupUsecase) DeleteGroup(ctx context.Context, id int64) (bool, error) { uc.log.WithContext(ctx).Infof("GetGroup: %v", id) - err := uc.repo.DeleteById(ctx, id) + err := uc.repo.DeleteByID(ctx, id) if err != nil { return false, err } diff --git a/app/admin/admin/internal/biz/judge.go b/app/admin/admin/internal/biz/judge.go index 7e4f29b..7b97da7 100644 --- a/app/admin/admin/internal/biz/judge.go +++ b/app/admin/admin/internal/biz/judge.go @@ -9,7 +9,7 @@ import ( // Submission is a Submit model. type Submission struct { - Id int64 + ID int64 Code string Status int32 Point int32 @@ -35,19 +35,19 @@ func NewJudgeUsecase(repo JudgeRepo, logger log.Logger) *JudgeUsecase { return &JudgeUsecase{repo: repo, log: log.NewHelper(logger)} } -func (uc *JudgeUsecase) SubmitJudge(ctx context.Context, submissionId int64, point int32) error { - uc.log.WithContext(ctx).Infof("SubmitJudge : %d", submissionId) - return uc.repo.SubmitJudge(ctx, submissionId, point) +func (uc *JudgeUsecase) SubmitJudge(ctx context.Context, submissionID int64, point int32) error { + uc.log.WithContext(ctx).Infof("SubmitJudge : %d", submissionID) + return uc.repo.SubmitJudge(ctx, submissionID, point) } -func (uc *JudgeUsecase) GetJudgableProblems(ctx context.Context, userId int64) ([]*Problem, error) { - uc.log.WithContext(ctx).Infof("GetJudgableProblems from user %d", userId) - return uc.repo.GetJudgableProblems(ctx, userId) +func (uc *JudgeUsecase) GetJudgableProblems(ctx context.Context, userID int64) ([]*Problem, error) { + uc.log.WithContext(ctx).Infof("GetJudgableProblems from user %d", userID) + return uc.repo.GetJudgableProblems(ctx, userID) } -func (uc *JudgeUsecase) GetSubmissions(ctx context.Context, problemId int64, status int32) ([]*Submission, error) { - uc.log.WithContext(ctx).Infof("GetSubmissions from problem %d", problemId) +func (uc *JudgeUsecase) GetSubmissions(ctx context.Context, problemID int64, status int32) ([]*Submission, error) { + uc.log.WithContext(ctx).Infof("GetSubmissions from problem %d", problemID) if status == 0 { - return uc.repo.GetSubmissions(ctx, problemId) + return uc.repo.GetSubmissions(ctx, problemID) } - return uc.repo.GetSubmissionsWithStatus(ctx, problemId, status) + return uc.repo.GetSubmissionsWithStatus(ctx, problemID, status) } diff --git a/app/admin/admin/internal/biz/problem.go b/app/admin/admin/internal/biz/problem.go index e187446..1537a79 100644 --- a/app/admin/admin/internal/biz/problem.go +++ b/app/admin/admin/internal/biz/problem.go @@ -9,17 +9,16 @@ import ( // Problem is a Problem model. type Problem struct { - Id int64 - TypeId int64 + ID int64 + TypeID int64 Title string Content string - Point int32 - ContestId int64 - CaseVersion int32 - Index int32 + Score int16 + ContestID int64 + CaseVersion int16 + Index int16 Visibility pb.Visibility - OwnerId int64 - Config string + OwnerID int64 } type ProblemRepo interface { diff --git a/app/admin/admin/internal/biz/rank.go b/app/admin/admin/internal/biz/rank.go index 097c7a4..245e781 100644 --- a/app/admin/admin/internal/biz/rank.go +++ b/app/admin/admin/internal/biz/rank.go @@ -10,12 +10,12 @@ import ( ) type Rank struct { - ContestId int64 + ContestID int64 UserRank []*UserRank } type UserRank struct { - UserId int64 + UserID int64 UserName string Rank int32 Penalty int32 @@ -26,8 +26,8 @@ type UserRank struct { } type UserProblemResult struct { - SubmissionId int64 - ProblemId int64 + SubmissionID int64 + ProblemID int64 State int32 Point int32 TriedCount int32 @@ -41,7 +41,7 @@ const ( ) type RankRepo interface { - GetSubmissions(ctx context.Context, contestId int64) (map[int64]*UserRank, error) + GetSubmissions(ctx context.Context, contestID int64) (map[int64]*UserRank, error) Save(ctx context.Context, contest *Contest, rank *Rank) error Find(ctx context.Context, contest *Contest) (*Rank, error) } @@ -68,7 +68,7 @@ func (r *RankUsecase) Save(ctx context.Context, contest *Contest, rank *Rank) er } func (r *RankUsecase) Update(ctx context.Context, contest *Contest) (*Rank, error) { - userSubmissions, err := r.repo.GetSubmissions(ctx, contest.Id) + userSubmissions, err := r.repo.GetSubmissions(ctx, contest.ID) if err != nil { return nil, err } @@ -84,7 +84,7 @@ func (r *RankUsecase) Update(ctx context.Context, contest *Contest) (*Rank, erro func (r *RankUsecase) rankByIOI(userSubmissions map[int64]*UserRank, contest *Contest) (*Rank, error) { var res = &Rank{ - ContestId: contest.Id, + ContestID: contest.ID, UserRank: make([]*UserRank, 0), } if len(userSubmissions) == 0 { @@ -119,7 +119,7 @@ func (r *RankUsecase) rankByIOI(userSubmissions map[int64]*UserRank, contest *Co func (r *RankUsecase) rankByACM(userSubmissions map[int64]*UserRank, contest *Contest) (*Rank, error) { var res = &Rank{ - ContestId: contest.Id, + ContestID: contest.ID, UserRank: make([]*UserRank, 0), } if len(userSubmissions) == 0 { @@ -132,8 +132,8 @@ func (r *RankUsecase) rankByACM(userSubmissions map[int64]*UserRank, contest *Co achieveTime := time.Unix(0, 0) for _, p := range v.Problems { prob := &UserProblemResult{ - SubmissionId: p.SubmissionId, - ProblemId: p.ProblemId, + SubmissionID: p.SubmissionID, + ProblemID: p.ProblemID, State: p.State, TriedCount: p.TriedCount, SubmitTime: p.SubmitTime, @@ -148,10 +148,10 @@ func (r *RankUsecase) rankByACM(userSubmissions map[int64]*UserRank, contest *Co achieveTime = p.SubmitTime } } - problems[p.ProblemId] = prob + problems[p.ProblemID] = prob } res.UserRank = append(res.UserRank, &UserRank{ - UserId: v.UserId, + UserID: v.UserID, UserName: v.UserName, Penalty: pent, TotalPoint: score, diff --git a/app/admin/admin/internal/biz/user.go b/app/admin/admin/internal/biz/user.go index f415b88..1bffdc3 100644 --- a/app/admin/admin/internal/biz/user.go +++ b/app/admin/admin/internal/biz/user.go @@ -19,13 +19,13 @@ type User struct { Password string Salt string State int16 - GroupIds []int64 + GroupIDs []int64 } type UserCreate struct { Username string Password string Salt string - GroupIds []int64 + GroupIDs []int64 } // UserRepo is a Greater repo. @@ -84,7 +84,7 @@ func (uc *UserUsecase) ListUser(ctx context.Context, current int64, size int64) return res, nil } -func (uc *UserUsecase) BatchSave(ctx context.Context, number int32, groupIds []int64) (map[string]string, error) { +func (uc *UserUsecase) BatchSave(ctx context.Context, number int32, groupIDs []int64) (map[string]string, error) { users := make([]*UserCreate, 0) passwordMap := make(map[string]string) for i := 0; i < int(number); i++ { @@ -96,7 +96,7 @@ func (uc *UserUsecase) BatchSave(ctx context.Context, number int32, groupIds []i Username: username, Salt: salt, Password: md5Password, - GroupIds: groupIds, + GroupIDs: groupIDs, }) passwordMap[username] = password } diff --git a/app/admin/admin/internal/data/adjudicator.go b/app/admin/admin/internal/data/adjudicator.go index f8d3b3b..222359d 100644 --- a/app/admin/admin/internal/data/adjudicator.go +++ b/app/admin/admin/internal/data/adjudicator.go @@ -22,16 +22,16 @@ func NewAdjudicatorRepo(data *Data, logger log.Logger) biz.AdjudicatorRepo { } } -func (r *adjudicatorRepo) Save(ctx context.Context, groupIds []int64) error { - return r.data.db.Problem.Update().AddAdjudicatorIDs(groupIds...).Exec(ctx) +func (r *adjudicatorRepo) Save(ctx context.Context, groupIDs []int64) error { + return r.data.db.Problem.Update().AddAdjudicatorIDs(groupIDs...).Exec(ctx) } -func (r *adjudicatorRepo) Update(ctx context.Context, groupIds []int64) error { - return r.data.db.Problem.Update().ClearAdjudicators().AddAdjudicatorIDs(groupIds...).Exec(ctx) +func (r *adjudicatorRepo) Update(ctx context.Context, groupIDs []int64) error { + return r.data.db.Problem.Update().ClearAdjudicators().AddAdjudicatorIDs(groupIDs...).Exec(ctx) } -func (r *adjudicatorRepo) FindByID(ctx context.Context, problemId int64) (*biz.Adjudicator, error) { - groups, err := r.data.db.Problem.Query().Where(problem.IDEQ(problemId)).QueryAdjudicators().All(ctx) +func (r *adjudicatorRepo) FindByID(ctx context.Context, problemID int64) (*biz.Adjudicator, error) { + groups, err := r.data.db.Problem.Query().Where(problem.IDEQ(problemID)).QueryAdjudicators().All(ctx) if err != nil { return nil, err } @@ -40,8 +40,8 @@ func (r *adjudicatorRepo) FindByID(ctx context.Context, problemId int64) (*biz.A }, nil } -func (r *adjudicatorRepo) FindProblemById(ctx context.Context, problemId int64) (*ent.Problem, error) { - v, err := r.data.db.Problem.Query().Where(problem.ID(problemId)).First(ctx) +func (r *adjudicatorRepo) FindProblemByID(ctx context.Context, problemID int64) (*ent.Problem, error) { + v, err := r.data.db.Problem.Query().Where(problem.ID(problemID)).First(ctx) if err != nil { return nil, err } diff --git a/app/admin/admin/internal/data/case.go b/app/admin/admin/internal/data/case.go index 2e2e136..7cd287a 100644 --- a/app/admin/admin/internal/data/case.go +++ b/app/admin/admin/internal/data/case.go @@ -21,26 +21,26 @@ func NewProblemCaseRepo(data *Data, logger log.Logger) biz.CaseRepo { } } -func (r *caseRepo) UploadCasesFile(problemId int64, casesFile multipart.File, filename string, casesType string) error { - err := r.data.fm.DeleteCase(problemId) +func (r *caseRepo) UploadCasesFile(problemID int64, casesFile multipart.File, filename string, casesType string) error { + err := r.data.fm.DeleteCase(problemID) if err != nil { return err } - err = r.data.fm.SaveAndExtractCase(casesFile, filename, problemId) + err = r.data.fm.SaveAndExtractCase(casesFile, filename, problemID) if err != nil { return err } if casesType == "hydro" { - err = r.data.fm.HandleHydroCase(problemId) + err = r.data.fm.HandleHydroCase(problemID) if err != nil { return err } } - config, err := r.data.fm.GetJudgeConfig(problemId) + config, err := r.data.fm.GetJudgeConfig(problemID) if err != nil { return err } - err = r.data.fm.CaseCrlfToLf(problemId, config) + err = r.data.fm.CaseCrlfToLf(problemID, config) if err != nil { return err } @@ -48,9 +48,9 @@ func (r *caseRepo) UploadCasesFile(problemId int64, casesFile multipart.File, fi if err != nil { return err } - err = r.data.fm.SetJudgeConfig(problemId, config) + err = r.data.fm.SetJudgeConfig(problemID, config) if err != nil { return err } - return r.data.fm.CompressAndArchive(problemId) + return r.data.fm.CompressAndArchive(problemID) } diff --git a/app/admin/admin/internal/data/contest.go b/app/admin/admin/internal/data/contest.go index bb5d4f1..bcb5d58 100644 --- a/app/admin/admin/internal/data/contest.go +++ b/app/admin/admin/internal/data/contest.go @@ -42,7 +42,7 @@ func (r *contestRepo) Save(ctx context.Context, g *biz.Contest) (*biz.Contest, e if err != nil { return nil, err } - g.Id = res.ID + g.ID = res.ID return g, nil } @@ -61,7 +61,7 @@ func (r *contestRepo) Update(ctx context.Context, g *biz.Contest) error { SetLanguage(g.Language). SetExtraTime(int16(g.ExtraTime)). SetCreateTime(time.Now()). - Where(contest.ID(g.Id)). + Where(contest.ID(g.ID)). Save(ctx) if err != nil { return err @@ -76,7 +76,7 @@ func (r *contestRepo) FindByID(ctx context.Context, id int64) (*biz.Contest, err return nil, err } return &biz.Contest{ - Id: po.ID, + ID: po.ID, Title: po.Title, Description: po.Description, Status: util.ContestStateToInt(po.State, po.StartTime, po.EndTime), @@ -105,7 +105,7 @@ func (r *contestRepo) ListPages(ctx context.Context, current int64, size int64) rv := make([]*biz.Contest, 0) for _, po := range res { rv = append(rv, &biz.Contest{ - Id: po.ID, + ID: po.ID, Title: po.Title, Description: po.Description, Status: util.ContestStateToInt(po.State, po.StartTime, po.EndTime), @@ -119,17 +119,17 @@ func (r *contestRepo) ListPages(ctx context.Context, current int64, size int64) } return rv, nil } -func (r *contestRepo) AddContestants(ctx context.Context, contestId int64, groupId int64, role int32) error { +func (r *contestRepo) AddContestants(ctx context.Context, contestID int64, groupID int64, role int32) error { switch role { case 0: - _, err := r.data.db.Contest.UpdateOneID(contestId).AddContestantIDs(groupId).Save(ctx) + _, err := r.data.db.Contest.UpdateOneID(contestID).AddContestantIDs(groupID).Save(ctx) if err != nil { log.Debug(" error :", err) return err } return nil case 1: - _, err := r.data.db.Contest.UpdateOneID(contestId).AddManagerIDs(groupId).Save(ctx) + _, err := r.data.db.Contest.UpdateOneID(contestID).AddManagerIDs(groupID).Save(ctx) if err != nil { log.Debug(" error :", err) return err diff --git a/app/admin/admin/internal/data/group.go b/app/admin/admin/internal/data/group.go index dde21af..e9ec9ed 100644 --- a/app/admin/admin/internal/data/group.go +++ b/app/admin/admin/internal/data/group.go @@ -30,48 +30,48 @@ func (r *groupRepo) Save(ctx context.Context, g *biz.Group) (*biz.Group, error) return nil, err } r.log.WithContext(ctx).Infof("Save Group: %v", g.Name) - return &biz.Group{Id: po.ID, Name: po.GroupName}, nil + return &biz.Group{ID: po.ID, Name: po.GroupName}, nil } func (r *groupRepo) Update(ctx context.Context, g *biz.Group) (*int64, error) { - res, err := r.data.db.Group.Update(). + po, err := r.data.db.Group.Update(). SetGroupName(g.Name). - Where(group.IDEQ(g.Id)). + Where(group.IDEQ(g.ID)). Save(ctx) if err != nil { return nil, err } - res64 := int64(res) + res64 := int64(po) return &res64, nil } func (r *groupRepo) FindByID(ctx context.Context, id int64) (*biz.Group, error) { - group, err := r.data.db.Group.Query().Where(group.IDEQ(id)).Only(ctx) + po, err := r.data.db.Group.Query().Where(group.IDEQ(id)).Only(ctx) if err != nil { return nil, err } return &biz.Group{ - Id: group.ID, - Name: group.GroupName, + ID: po.ID, + Name: po.GroupName, }, nil } func (r *groupRepo) ListByPage(ctx context.Context, current int64, size int64) ([]*biz.Group, error) { - res, err := r.data.db.Group.Query().Limit(int(size)).Offset(int((current - 1) * size)).All(ctx) + po, err := r.data.db.Group.Query().Limit(int(size)).Offset(int((current - 1) * size)).All(ctx) if err != nil { return nil, err } - var groups []*biz.Group - for _, g := range res { + groups := make([]*biz.Group, len(po)) + for _, g := range po { groups = append(groups, &biz.Group{ - Id: g.ID, + ID: g.ID, Name: g.GroupName, }) } return groups, nil } -func (r *groupRepo) DeleteById(ctx context.Context, id int64) error { +func (r *groupRepo) DeleteByID(ctx context.Context, id int64) error { err := r.data.db.Group.DeleteOneID(id).Exec(ctx) return err } diff --git a/app/admin/admin/internal/data/judge.go b/app/admin/admin/internal/data/judge.go index 6ff17c9..bafbd75 100644 --- a/app/admin/admin/internal/data/judge.go +++ b/app/admin/admin/internal/data/judge.go @@ -24,44 +24,43 @@ func NewJudgeRepo(data *Data, logger log.Logger) biz.JudgeRepo { } } -func (r *judgeRepo) SubmitJudge(ctx context.Context, submissionId int64, point int32) error { - _, err := r.data.db.Submission.Update().SetState(2).SetPoint(int16(point)).Where(submission.IDEQ(submissionId)).Save(ctx) +func (r *judgeRepo) SubmitJudge(ctx context.Context, submissionID int64, point int32) error { + _, err := r.data.db.Submission.Update().SetState(2).SetPoint(int16(point)).Where(submission.IDEQ(submissionID)).Save(ctx) if err != nil { return err } return nil } -func (r *judgeRepo) GetJudgableProblems(ctx context.Context, userId int64) ([]*biz.Problem, error) { - problems, err := r.data.db.Problem.Query().Where(problem.HasAdjudicatorsWith(group.HasUsersWith(user.IDEQ(userId)))).All(ctx) +func (r *judgeRepo) GetJudgableProblems(ctx context.Context, userID int64) ([]*biz.Problem, error) { + problems, err := r.data.db.Problem.Query().Where(problem.HasAdjudicatorsWith(group.HasUsersWith(user.IDEQ(userID)))).All(ctx) if err != nil { return nil, err } rv := make([]*biz.Problem, 0) for _, p := range problems { rv = append(rv, &biz.Problem{ - Id: p.ID, + ID: p.ID, Title: p.Title, Content: p.Content, - Point: int32(p.Score), - ContestId: p.ContestID, - CaseVersion: int32(p.CaseVersion), - Index: int32(p.Index), - Config: "", + Score: p.Score, + ContestID: p.ContestID, + CaseVersion: p.CaseVersion, + Index: p.Index, }) } return rv, nil } -func (r *judgeRepo) GetSubmissions(ctx context.Context, problemId int64) ([]*biz.Submission, error) { - submissions, err := r.data.db.Submission.Query().Where(submission.ProblemIDEQ(problemId)).All(ctx) +func (r *judgeRepo) GetSubmissions(ctx context.Context, problemID int64) ([]*biz.Submission, error) { + submissions, err := r.data.db.Submission.Query().Where(submission.ProblemIDEQ(problemID)).All(ctx) if err != nil { return nil, err } rv := make([]*biz.Submission, 0) for _, s := range submissions { rv = append(rv, &biz.Submission{ - Id: s.ID, + ID: s.ID, Code: s.Code, Status: int32(s.State), Point: int32(s.Point), @@ -71,15 +70,15 @@ func (r *judgeRepo) GetSubmissions(ctx context.Context, problemId int64) ([]*biz return rv, nil } -func (r *judgeRepo) GetSubmissionsWithStatus(ctx context.Context, problemId int64, status int32) ([]*biz.Submission, error) { - submissions, err := r.data.db.Submission.Query().Where(submission.And(submission.ProblemIDEQ(problemId), submission.StateEQ(int16(status)))).All(ctx) +func (r *judgeRepo) GetSubmissionsWithStatus(ctx context.Context, problemID int64, status int32) ([]*biz.Submission, error) { + submissions, err := r.data.db.Submission.Query().Where(submission.And(submission.ProblemIDEQ(problemID), submission.StateEQ(int16(status)))).All(ctx) if err != nil { return nil, err } rv := make([]*biz.Submission, 0) for _, s := range submissions { rv = append(rv, &biz.Submission{ - Id: s.ID, + ID: s.ID, Code: s.Code, Status: int32(s.State), Point: int32(s.Point), diff --git a/app/admin/admin/internal/data/problem.go b/app/admin/admin/internal/data/problem.go index 2a82e98..f7d7cee 100644 --- a/app/admin/admin/internal/data/problem.go +++ b/app/admin/admin/internal/data/problem.go @@ -3,8 +3,10 @@ package data import ( "context" "sastoj/app/admin/admin/internal/biz" + "sastoj/ent" "sastoj/ent/contest" "sastoj/ent/problem" + "sastoj/ent/user" "sastoj/pkg/util" "time" @@ -26,13 +28,13 @@ func NewProblemRepo(data *Data, logger log.Logger) biz.ProblemRepo { func (r *problemRepo) Save(ctx context.Context, g *biz.Problem) (*int64, error) { res, err := r.data.db.Problem.Create(). - SetProblemTypeID(g.TypeId). + SetProblemTypeID(g.TypeID). SetTitle(g.Title). SetContent(g.Content). - SetScore(int16(g.Point)). - SetContestID(g.ContestId). + SetScore(g.Score). + SetContestID(g.ContestID). SetCaseVersion(1). - SetIndex(int16(g.Index)). + SetIndex(g.Index). SetOwnerID(getUserID(ctx)). SetVisibility(util.VisToEnt(g.Visibility)). Save(ctx) @@ -44,19 +46,18 @@ func (r *problemRepo) Save(ctx context.Context, g *biz.Problem) (*int64, error) func (r *problemRepo) Update(ctx context.Context, g *biz.Problem) (*int64, error) { res, err := r.data.db.Problem.Update(). - SetProblemTypeID(g.TypeId). + SetProblemTypeID(g.TypeID). SetTitle(g.Title). SetContent(g.Content). - SetScore(int16(g.Point)). - SetContestID(g.ContestId). + SetScore(g.Score). + SetContestID(g.ContestID). AddCaseVersion(1). - SetIndex(int16(g.Index)). - SetOwnerID(getUserID(ctx)). + SetIndex(g.Index). SetVisibility(util.VisToEnt(g.Visibility)). - Where(problem.ID(g.Id)). + Where(problem.ID(g.ID)). Where(problem.IsDeleted(false)). Where(problem.HasContestWith( - contest.IDEQ(g.ContestId), contest.StartTimeGT(time.Now()))). + contest.IDEQ(g.ContestID), contest.StartTimeGT(time.Now()))). Save(ctx) if err != nil { return nil, err @@ -69,25 +70,23 @@ func (r *problemRepo) FindByID(ctx context.Context, id int64) (*biz.Problem, err p, err := r.data.db.Problem.Query(). Where(problem.ID(id)). Where(problem.IsDeleted(false)). - WithOwner(). + WithOwner(func(q *ent.UserQuery) { + q.Select(user.FieldID) + }). First(ctx) if err != nil { return nil, err } - owner, err := p.QueryOwner().First(ctx) - if err != nil { - return nil, err - } vis := util.VisToPb(p.Visibility) return &biz.Problem{ - Id: p.ID, + ID: p.ID, Title: p.Title, Content: p.Content, - Point: int32(p.Score), - ContestId: p.ContestID, - CaseVersion: int32(p.CaseVersion), - Index: int32(p.Index), - OwnerId: owner.ID, + Score: p.Score, + ContestID: p.ContestID, + CaseVersion: p.CaseVersion, + Index: p.Index, + OwnerID: p.Edges.Owner.ID, Visibility: vis, }, nil } @@ -107,7 +106,9 @@ func (r *problemRepo) Delete(ctx context.Context, id int64) (*int64, error) { func (r *problemRepo) ListPages(ctx context.Context, currency int32, size int32) ([]*biz.Problem, error) { res, err := r.data.db.Problem.Query(). Limit(int(size)).Offset(int((currency - 1) * size)). - WithOwner(). + WithOwner(func(q *ent.UserQuery) { + q.Select(user.FieldID) + }). All(ctx) if err != nil { return nil, err @@ -115,20 +116,17 @@ func (r *problemRepo) ListPages(ctx context.Context, currency int32, size int32) list := make([]*biz.Problem, 0) for _, v := range res { vis := util.VisToPb(v.Visibility) - owner, err := v.QueryOwner().First(ctx) - if err != nil { - return nil, err - } + list = append(list, &biz.Problem{ - Id: v.ID, - TypeId: v.ProblemTypeID, + ID: v.ID, + TypeID: v.ProblemTypeID, Title: v.Title, Content: v.Content, - Point: int32(v.Score), - ContestId: v.ContestID, - CaseVersion: int32(v.CaseVersion), - Index: int32(v.Index), - OwnerId: owner.ID, + Score: v.Score, + ContestID: v.ContestID, + CaseVersion: v.CaseVersion, + Index: v.Index, + OwnerID: v.Edges.Owner.ID, Visibility: vis, }) } @@ -136,5 +134,5 @@ func (r *problemRepo) ListPages(ctx context.Context, currency int32, size int32) } func getUserID(ctx context.Context) int64 { - return util.GetUserInfoFromCtx(ctx).UserId + return util.GetUserInfoFromCtx(ctx).UserID } diff --git a/app/admin/admin/internal/data/rank.go b/app/admin/admin/internal/data/rank.go index b9ce9b7..0979580 100644 --- a/app/admin/admin/internal/data/rank.go +++ b/app/admin/admin/internal/data/rank.go @@ -30,7 +30,7 @@ func NewRankRepo(data *Data, logger log.Logger) biz.RankRepo { func (r *rankRepo) Find(ctx context.Context, contest *biz.Contest) (*biz.Rank, error) { if contest.EndTime.After(time.Now()) { const prefix = "admin:contest:rank:" - key := prefix + strconv.FormatInt(contest.Id, 10) + key := prefix + strconv.FormatInt(contest.ID, 10) data, err := r.data.redis.Get(ctx, key).Result() if err != nil { return nil, err @@ -49,7 +49,7 @@ func (r *rankRepo) Find(ctx context.Context, contest *biz.Contest) (*biz.Rank, e func (r *rankRepo) Save(ctx context.Context, contest *biz.Contest, rank *biz.Rank) error { if contest.EndTime.After(time.Now()) { const prefix = "admin:contest:rank:" - key := prefix + strconv.FormatInt(contest.Id, 10) + key := prefix + strconv.FormatInt(contest.ID, 10) rankData, err := json.Marshal(rank) if err != nil { return err @@ -64,9 +64,9 @@ func (r *rankRepo) Save(ctx context.Context, contest *biz.Contest, rank *biz.Ran return nil } -func (r *rankRepo) GetSubmissions(ctx context.Context, contestId int64) (map[int64]*biz.UserRank, error) { +func (r *rankRepo) GetSubmissions(ctx context.Context, contestID int64) (map[int64]*biz.UserRank, error) { submissions, err := r.data.db.Submission.Query(). - Where(submission.HasProblemsWith(problem.HasContestWith(contest.ID(contestId)))). + Where(submission.HasProblemsWith(problem.HasContestWith(contest.ID(contestID)))). WithUsers(). WithProblems(). All(ctx) @@ -82,7 +82,7 @@ func (r *rankRepo) GetSubmissions(ctx context.Context, contestId int64) (map[int for _, v := range submissions { if _, ok := res[v.UserID]; !ok { res[v.UserID] = &biz.UserRank{ - UserId: v.UserID, + UserID: v.UserID, UserName: v.Edges.Users.Username, AchievedTime: time.Unix(0, 0), Problems: make(map[int64]*biz.UserProblemResult), @@ -99,8 +99,8 @@ func (r *rankRepo) GetSubmissions(ctx context.Context, contestId int64) (map[int } if _, ok := res[v.UserID].Problems[v.ProblemID]; !ok { res[v.UserID].Problems[v.ProblemID] = &biz.UserProblemResult{ - SubmissionId: v.ID, - ProblemId: v.ProblemID, + SubmissionID: v.ID, + ProblemID: v.ProblemID, State: status, Point: int32(v.Point), TriedCount: 0, @@ -114,7 +114,7 @@ func (r *rankRepo) GetSubmissions(ctx context.Context, contestId int64) (map[int // only update submission when score is higher if int64(v.Point) > int64(res[v.UserID].Problems[v.ProblemID].Point) { res[v.UserID].Problems[v.ProblemID].Point = int32(v.Point) - res[v.UserID].Problems[v.ProblemID].SubmissionId = v.ID + res[v.UserID].Problems[v.ProblemID].SubmissionID = v.ID res[v.UserID].Problems[v.ProblemID].SubmitTime = v.CreateTime res[v.UserID].Problems[v.ProblemID].State = status } diff --git a/app/admin/admin/internal/data/user.go b/app/admin/admin/internal/data/user.go index 2acd366..cfd89d5 100644 --- a/app/admin/admin/internal/data/user.go +++ b/app/admin/admin/internal/data/user.go @@ -28,7 +28,7 @@ func (r *userRepo) Save(ctx context.Context, u *biz.User) (*biz.User, error) { SetUsername(u.Username). SetPassword(u.Password). SetSalt(u.Salt). - AddGroupIDs(u.GroupIds...). + AddGroupIDs(u.GroupIDs...). Save(ctx) if err != nil { log.Debug("err: ", err) @@ -46,7 +46,7 @@ func (r *userRepo) Update(ctx context.Context, u *biz.User) (*int64, error) { res, err := r.data.db.User.Update(). SetUsername(u.Username). ClearGroups(). - AddGroupIDs(u.GroupIds...). + AddGroupIDs(u.GroupIDs...). SetState(entState). Where(user.IDEQ(u.ID)). Save(ctx) @@ -67,7 +67,7 @@ func (r *userRepo) FindByID(ctx context.Context, id int64) (*biz.User, error) { return &biz.User{ ID: res.ID, Username: res.Username, - GroupIds: res.QueryGroups().IDsX(ctx), + GroupIDs: res.QueryGroups().IDsX(ctx), State: util.UserStateToInt(res.State), }, nil } @@ -83,7 +83,7 @@ func (r *userRepo) ListPages(ctx context.Context, current int64, size int64) ([] rv = append(rv, &biz.User{ ID: u.ID, Username: u.Username, - GroupIds: u.QueryGroups().IDsX(ctx), + GroupIDs: u.QueryGroups().IDsX(ctx), State: util.UserStateToInt(u.State), }) } @@ -94,7 +94,7 @@ func (r *userRepo) BatchSave(ctx context.Context, users []*biz.UserCreate) ([]st c.SetUsername(users[i].Username). SetSalt(users[i].Salt). SetPassword(users[i].Password). - AddGroupIDs(users[i].GroupIds...) + AddGroupIDs(users[i].GroupIDs...) }).Save(ctx) if err != nil { log.Debug("err: ", err) diff --git a/app/admin/admin/internal/service/case.go b/app/admin/admin/internal/service/case.go index b41c061..fed14b2 100644 --- a/app/admin/admin/internal/service/case.go +++ b/app/admin/admin/internal/service/case.go @@ -10,7 +10,7 @@ import ( ) func (s *AdminService) DeleteCasesByProblemId(ctx context.Context, req *pb.DeleteCasesByProblemIdRequest) (*pb.DeleteCasesByProblemIdReply, error) { - err := s.casec.DeleteCasesByProblemId(ctx, req.ProblemId) + err := s.casec.DeleteCasesByProblemID(ctx, req.ProblemId) return &pb.DeleteCasesByProblemIdReply{}, err } diff --git a/app/admin/admin/internal/service/contest.go b/app/admin/admin/internal/service/contest.go index b2ce978..0ef1f9b 100644 --- a/app/admin/admin/internal/service/contest.go +++ b/app/admin/admin/internal/service/contest.go @@ -27,12 +27,12 @@ func (s *AdminService) CreateContest(ctx context.Context, req *v1.CreateContestR return nil, err } return &v1.CreateContestReply{ - Id: rv.Id, + Id: rv.ID, }, nil } func (s *AdminService) UpdateContest(ctx context.Context, req *v1.UpdateContestRequest) (*v1.UpdateContestReply, error) { err := s.ctsc.UpdateContest(ctx, &biz.Contest{ - Id: req.Id, + ID: req.Id, Title: req.Title, Description: req.Description, Status: req.Status, @@ -55,7 +55,7 @@ func (s *AdminService) DeleteContest(ctx context.Context, req *v1.DeleteContestR if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, v1.ErrorContestNotFound("contest with specified Id not found") + return nil, v1.ErrorContestNotFound("contest with specified ID not found") } return nil, err } @@ -69,12 +69,12 @@ func (s *AdminService) GetContest(ctx context.Context, req *v1.GetContestRequest var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, v1.ErrorContestNotFound("contest with specified Id not found") + return nil, v1.ErrorContestNotFound("contest with specified ID not found") } return nil, err } return &v1.GetContestReply{ - Id: rv.Id, + Id: rv.ID, Title: rv.Title, Description: rv.Description, Status: rv.Status, @@ -94,7 +94,7 @@ func (s *AdminService) ListContest(ctx context.Context, req *v1.ListContestReque var list []*v1.ListContestReply_Contest for _, v := range rv { list = append(list, &v1.ListContestReply_Contest{ - Id: v.Id, + Id: v.ID, Title: v.Title, Description: v.Description, Status: v.Status, @@ -118,9 +118,9 @@ func (s *AdminService) AddContestants(ctx context.Context, req *v1.AddContestant if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, v1.ErrorContestNotFound("contest with specified Id not found") + return nil, v1.ErrorContestNotFound("contest with specified ID not found") } - return nil, v1.ErrorGroupNotFound("group with specified Id not found") + return nil, v1.ErrorGroupNotFound("group with specified ID not found") } return &v1.AddContestantsReply{ Success: true, @@ -131,7 +131,7 @@ func (s *AdminService) ManualRanking(ctx context.Context, req *v1.ManualRankingR if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, v1.ErrorContestNotFound("contest with specified Id not found") + return nil, v1.ErrorContestNotFound("contest with specified ID not found") } return nil, err } @@ -151,7 +151,7 @@ func (s *AdminService) GetRanking(ctx context.Context, req *v1.GetRankingRequest if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, v1.ErrorContestNotFound("contest with specified Id not found") + return nil, v1.ErrorContestNotFound("contest with specified ID not found") } return nil, err } @@ -164,7 +164,7 @@ func (s *AdminService) GetRanking(ctx context.Context, req *v1.GetRankingRequest problems := make([]*v1.GetRankingReply_UserResult_ProblemResult, 0) for _, p := range v.Problems { problems = append(problems, &v1.GetRankingReply_UserResult_ProblemResult{ - ProblemId: p.ProblemId, + ProblemId: p.ProblemID, State: p.State, Point: p.Point, TriedTimes: p.TriedCount, diff --git a/app/admin/admin/internal/service/group.go b/app/admin/admin/internal/service/group.go index 58b34e2..fca0a42 100644 --- a/app/admin/admin/internal/service/group.go +++ b/app/admin/admin/internal/service/group.go @@ -14,12 +14,12 @@ func (s *AdminService) CreateGroup(ctx context.Context, req *pb.CreateGroupReque return nil, err } return &pb.CreateGroupReply{ - Id: rv.Id, + Id: rv.ID, }, nil } func (s *AdminService) UpdateGroup(ctx context.Context, req *pb.UpdateGroupRequest) (*pb.UpdateGroupReply, error) { rv, err := s.gc.UpdateGroup(ctx, &biz.Group{ - Id: req.Id, + ID: req.Id, Name: req.Name, }) if err != nil { @@ -34,7 +34,7 @@ func (s *AdminService) DeleteGroup(ctx context.Context, req *pb.DeleteGroupReque if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, pb.ErrorGroupNotFound("Group with specified Id not found") + return nil, pb.ErrorGroupNotFound("Group with specified ID not found") } return nil, err } @@ -44,16 +44,16 @@ func (s *AdminService) DeleteGroup(ctx context.Context, req *pb.DeleteGroupReque } func (s *AdminService) GetGroup(ctx context.Context, req *pb.GetGroupRequest) (*pb.GetGroupReply, error) { - rv, err := s.gc.GetGroup(ctx, &biz.Group{Id: req.Id}) + rv, err := s.gc.GetGroup(ctx, &biz.Group{ID: req.Id}) if err != nil { var entErr *ent.NotFoundError if errors.As(err, &entErr) { - return nil, pb.ErrorGroupNotFound("Group with specified Id not found") + return nil, pb.ErrorGroupNotFound("Group with specified ID not found") } return nil, err } return &pb.GetGroupReply{ - Id: rv.Id, + Id: rv.ID, Name: rv.Name, }, nil } @@ -65,7 +65,7 @@ func (s *AdminService) ListGroup(ctx context.Context, req *pb.ListGroupRequest) var list []*pb.ListGroupReply_Group for _, v := range rv { list = append(list, &pb.ListGroupReply_Group{ - Id: v.Id, + Id: v.ID, Name: v.Name, }) } diff --git a/app/admin/admin/internal/service/judge.go b/app/admin/admin/internal/service/judge.go index 35b63fb..d657994 100644 --- a/app/admin/admin/internal/service/judge.go +++ b/app/admin/admin/internal/service/judge.go @@ -22,14 +22,13 @@ func (s *AdminService) GetJudgableProblems(ctx context.Context, req *pb.GetJudga reply := &pb.GetJudgableProblemsReply{} for _, p := range ps { reply.Results = append(reply.Results, &pb.Problem{ - Id: p.Id, + Id: p.ID, Title: p.Title, Content: p.Content, - Point: p.Point, - ContestId: p.ContestId, - CaseVersion: p.CaseVersion, - Index: p.Index, - Config: p.Config, + Score: int32(p.Score), + ContestId: p.ContestID, + CaseVersion: int32(p.CaseVersion), + Index: int32(p.Index), }) } return reply, nil @@ -42,7 +41,7 @@ func (s *AdminService) GetSubmissions(ctx context.Context, req *pb.GetSubmission reply := &pb.GetSubmissionsReply{} for _, p := range ps { reply.Submissions = append(reply.Submissions, &pb.Submission{ - Id: p.Id, + Id: p.ID, Code: p.Code, Point: p.Point, CreateTime: timestamppb.New(p.CreateTime), diff --git a/app/admin/admin/internal/service/problem.go b/app/admin/admin/internal/service/problem.go index a2faca6..738fa7c 100644 --- a/app/admin/admin/internal/service/problem.go +++ b/app/admin/admin/internal/service/problem.go @@ -8,15 +8,14 @@ import ( func (s *AdminService) CreateProblem(ctx context.Context, request *pb.CreateProblemRequest) (*pb.CreateProblemReply, error) { rv, err := s.pc.CreateProblem(ctx, &biz.Problem{ - TypeId: request.TypeId, + TypeID: request.TypeId, Title: request.Title, Content: request.Content, - Point: request.Point, - ContestId: request.ContestId, - Index: request.Index, + Score: int16(request.Score), + ContestID: request.ContestId, + Index: int16(request.Index), Visibility: request.Visibility, - OwnerId: request.OwnerId, - Config: request.Config, + OwnerID: request.OwnerId, }) if err != nil { return nil, err @@ -28,15 +27,13 @@ func (s *AdminService) CreateProblem(ctx context.Context, request *pb.CreateProb func (s *AdminService) UpdateProblem(ctx context.Context, request *pb.UpdateProblemRequest) (*pb.UpdateProblemReply, error) { rv, err := s.pc.UpdateProblem(ctx, &biz.Problem{ - TypeId: request.TypeId, + TypeID: request.TypeId, Title: request.Title, Content: request.Content, - Point: request.Point, - ContestId: request.ContestId, - Index: request.Index, + Score: int16(request.Score), + ContestID: request.ContestId, + Index: int16(request.Index), Visibility: request.Visibility, - OwnerId: request.OwnerId, - Config: request.Config, }) if err != nil { return nil, err @@ -62,16 +59,15 @@ func (s *AdminService) GetProblem(ctx context.Context, request *pb.GetProblemReq return nil, err } return &pb.GetProblemReply{ - Id: rv.Id, - TypeId: rv.TypeId, + Id: rv.ID, + TypeId: rv.TypeID, Title: rv.Title, Content: rv.Content, - Point: rv.Point, - ContestId: rv.ContestId, - CaseVersion: rv.CaseVersion, - Index: rv.Index, - Config: rv.Config, - OwnerId: rv.OwnerId, + Score: int32(rv.Score), + ContestId: rv.ContestID, + CaseVersion: int32(rv.CaseVersion), + Index: int32(rv.Index), + OwnerId: rv.OwnerID, Visibility: rv.Visibility, }, nil } @@ -84,16 +80,15 @@ func (s *AdminService) ListProblem(ctx context.Context, request *pb.ListProblemR var list []*pb.ListProblemReply_Problem for _, each := range rv { r := pb.ListProblemReply_Problem{ - Id: each.Id, - TypeId: each.TypeId, + Id: each.ID, + TypeId: each.TypeID, Title: each.Title, Content: each.Content, - Point: each.Point, - ContestId: each.ContestId, - CaseVersion: each.CaseVersion, - Index: each.Index, - Config: each.Config, - OwnerId: each.OwnerId, + Score: int32(each.Score), + ContestId: each.ContestID, + CaseVersion: int32(each.CaseVersion), + Index: int32(each.Index), + OwnerId: each.OwnerID, Visibility: each.Visibility, } list = append(list, &r) diff --git a/app/admin/admin/internal/service/user.go b/app/admin/admin/internal/service/user.go index 8b2c7e7..876a058 100644 --- a/app/admin/admin/internal/service/user.go +++ b/app/admin/admin/internal/service/user.go @@ -2,7 +2,6 @@ package service import ( "context" - _ "crypto/md5" _ "encoding/hex" pb "sastoj/api/sastoj/admin/admin/service/v1" "sastoj/app/admin/admin/internal/biz" @@ -12,7 +11,7 @@ func (s *AdminService) CreateUser(ctx context.Context, req *pb.CreateUserRequest rv, err := s.uc.CreateUser(ctx, &biz.User{ Username: req.Username, Password: req.Password, - GroupIds: req.GroupIds, + GroupIDs: req.GroupIds, State: 0, }) if err != nil { @@ -45,7 +44,7 @@ func (s *AdminService) UpdateUser(ctx context.Context, req *pb.UpdateUserRequest ID: req.Id, Username: req.Username, State: int16(req.State), - GroupIds: req.GroupIds, + GroupIDs: req.GroupIds, }) if err != nil { return nil, err @@ -70,7 +69,7 @@ func (s *AdminService) ListUser(ctx context.Context, req *pb.ListUserRequest) (* users = append(users, &pb.ListUserReply_User{ Id: v.ID, Username: v.Username, - GroupIds: v.GroupIds, + GroupIds: v.GroupIDs, State: int32(v.State), }) } diff --git a/app/judge/gojudge/internal/data/submission.go b/app/judge/gojudge/internal/data/submission.go index e195ddc..35ee020 100644 --- a/app/judge/gojudge/internal/data/submission.go +++ b/app/judge/gojudge/internal/data/submission.go @@ -11,7 +11,7 @@ import ( "sastoj/ent" "sastoj/ent/problem" "sastoj/pkg/mq" - pJudge "sastoj/pkg/problem" + judge "sastoj/pkg/problem" "sastoj/pkg/util" "sync" "time" @@ -215,8 +215,8 @@ func (r *submissionRepo) JudgeSubmission(ctx context.Context, s *mq.Submission) // test each case for i, subtask := range config.Task.Subtasks { var subtaskState int16 = util.Accepted - var totalTime uint64 = 0 - var maxMemory uint64 = 0 + var totalTime uint64 + var maxMemory uint64 submissionCaseCreates := make([]*ent.SubmissionCaseCreate, len(subtask.Cases)) casesResult := make([]bool, len(subtask.Cases)) subtaskBuilder := r.data.db.SubmissionSubtask.Create(). @@ -332,7 +332,7 @@ func (r *submissionRepo) JudgeSubmission(ctx context.Context, s *mq.Submission) } } wg.Wait() - taskPoint, casesPoint, err := pJudge.Judging(casesResult, config.Task.TaskType, subtask) + taskPoint, casesPoint, err := judge.Judging(casesResult, config.Task.TaskType, subtask) if err != nil { r.log.Errorf("judging score error: %v", err) s.Status = util.SystemError diff --git a/app/public/auth/internal/biz/auth.go b/app/public/auth/internal/biz/auth.go index cb6c2b7..36297c3 100644 --- a/app/public/auth/internal/biz/auth.go +++ b/app/public/auth/internal/biz/auth.go @@ -18,14 +18,14 @@ type User struct { Password string Salt string Status int16 - GroupIds []int64 + GroupIDs []int64 GroupName string } // MyCustomClaims is a custom claim for jwt. type MyCustomClaims struct { - UserId int64 `json:"user_id"` - GroupIds []int64 `json:"group_ids"` + UserID int64 `json:"user_id"` + GroupIDs []int64 `json:"group_ids"` GroupName string `json:"group_name"` jwt.RegisteredClaims } @@ -95,8 +95,8 @@ func (uc *AuthUsecase) generateJWT(user *User) (string, error) { ID: "1", } claims := MyCustomClaims{ - UserId: user.ID, - GroupIds: user.GroupIds, + UserID: user.ID, + GroupIDs: user.GroupIDs, GroupName: user.GroupName, RegisteredClaims: registeredClaims, } diff --git a/app/public/auth/internal/data/auth.go b/app/public/auth/internal/data/auth.go index 24732a4..8dd3b45 100644 --- a/app/public/auth/internal/data/auth.go +++ b/app/public/auth/internal/data/auth.go @@ -4,7 +4,6 @@ import ( "context" "sastoj/app/public/auth/internal/biz" "sastoj/ent" - "sastoj/ent/contest" "sastoj/ent/group" "sastoj/ent/user" "sastoj/pkg/util" @@ -17,18 +16,6 @@ type authRepo struct { log *log.Helper } -func (a *authRepo) GetContests(ctx context.Context, groupIds []int64) ([]int64, error) { - contests, err := a.data.db.Contest.Query().Select(contest.FieldID).Where(contest.HasContestantsWith(group.IDIn(groupIds...))).All(ctx) - if err != nil { - return nil, err - } - var ids []int64 - for _, c := range contests { - ids = append(ids, c.ID) - } - return ids, nil -} - func (a *authRepo) FindUserByName(ctx context.Context, username string) (*biz.User, error) { po, err := a.data.db.User.Query(). Where( @@ -53,7 +40,7 @@ func (a *authRepo) FindUserByName(ctx context.Context, username string) (*biz.Us Password: po.Password, Salt: po.Salt, Status: util.UserStateToInt(po.State), - GroupIds: groupIDs, + GroupIDs: groupIDs, GroupName: po.Edges.Groups[0].GroupName, }, nil } diff --git a/app/public/auth/internal/service/auth.go b/app/public/auth/internal/service/auth.go index 150470c..2184ebf 100644 --- a/app/public/auth/internal/service/auth.go +++ b/app/public/auth/internal/service/auth.go @@ -26,6 +26,6 @@ func (s *AuthService) Login(ctx context.Context, req *pb.LoginRequest) (*pb.Logi } -//func (s *AuthService) Logout(ctx context.Context, req *pb.LogoutRequest) (*pb.LogoutReply, error) { -// return &pb.LogoutReply{}, nil -//} +// func (s *AuthService) Logout(ctx context.Context, req *pb.LogoutRequest) (*pb.LogoutReply, error) { +// return &pb.LogoutReply{}, nil +// } diff --git a/app/user/contest/internal/biz/problem.go b/app/user/contest/internal/biz/problem.go index 2841862..c1151e6 100644 --- a/app/user/contest/internal/biz/problem.go +++ b/app/user/contest/internal/biz/problem.go @@ -18,7 +18,7 @@ type Problem struct { type ProblemRepo interface { ListProblem(ctx context.Context, contestID int64) ([]*Problem, error) GetProblem(ctx context.Context, problemID, contestID int64) (*Problem, error) - GetProblemCaseVer(ctx context.Context, problemId int64) (int8, error) + GetProblemCaseVer(ctx context.Context, problemID int64) (int8, error) } type ProblemUsecase struct { @@ -46,6 +46,6 @@ func (uc *ProblemUsecase) GetProblem(ctx context.Context, contestID int64, probl return problem, nil } -func (uc *ProblemUsecase) GetProblemCaseVer(ctx context.Context, problemId int64) (int8, error) { - return uc.repo.GetProblemCaseVer(ctx, problemId) +func (uc *ProblemUsecase) GetProblemCaseVer(ctx context.Context, problemID int64) (int8, error) { + return uc.repo.GetProblemCaseVer(ctx, problemID) } diff --git a/app/user/contest/internal/data/problem.go b/app/user/contest/internal/data/problem.go index 980e99f..bf7fa89 100644 --- a/app/user/contest/internal/data/problem.go +++ b/app/user/contest/internal/data/problem.go @@ -22,17 +22,17 @@ type problemRepo struct { const ProblemPrefix = "user:contest:problem:" -func (p *problemRepo) GetProblemCaseVer(ctx context.Context, problemId int64) (int8, error) { - result, err := p.data.redis.Get(ctx, "problem:"+strconv.Itoa(int(problemId))+":"+"case_version").Result() +func (p *problemRepo) GetProblemCaseVer(ctx context.Context, problemID int64) (int8, error) { + result, err := p.data.redis.Get(ctx, "problem:"+strconv.Itoa(int(problemID))+":"+"case_version").Result() if err == nil { ver, _ := strconv.Atoi(result) return int8(ver), nil } - po, err := p.data.db.Problem.Query().Where(problem.IDEQ(problemId)).Only(ctx) + po, err := p.data.db.Problem.Query().Where(problem.IDEQ(problemID)).Only(ctx) if err != nil { return 0, err } - p.data.redis.Set(ctx, "problem:"+strconv.Itoa(int(problemId))+":"+"case_version", strconv.Itoa(int(po.CaseVersion)), 2*time.Hour) + p.data.redis.Set(ctx, "problem:"+strconv.Itoa(int(problemID))+":"+"case_version", strconv.Itoa(int(po.CaseVersion)), 2*time.Hour) return int8(po.CaseVersion), nil } diff --git a/app/user/contest/internal/data/submission.go b/app/user/contest/internal/data/submission.go index bf48321..85f038c 100644 --- a/app/user/contest/internal/data/submission.go +++ b/app/user/contest/internal/data/submission.go @@ -24,7 +24,7 @@ type submissionRepo struct { } func (s *submissionRepo) GetSelfTest(ctx context.Context, selfTestID string) (*biz.SelfTest, error) { - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID var res *biz.SelfTest // get from redis var po *mq.SelfTest @@ -52,7 +52,7 @@ func (s *submissionRepo) GetSelfTest(ctx context.Context, selfTestID string) (*b func (s *submissionRepo) GetCases(ctx context.Context, submissionID string, contestID int64) ([]*biz.Case, error) { id, err := strconv.ParseInt(submissionID, 10, 64) - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID var cases []*biz.Case if err != nil { // get from redis @@ -104,7 +104,7 @@ func (s *submissionRepo) CreateSelfTest(ctx context.Context, selfTest *biz.SelfT return fmt.Errorf("problem %d is not exist", selfTest.ProblemID) } - if !contestValidator(util.GetUserInfoFromCtx(ctx).GroupIds, po) { + if !contestValidator(util.GetUserInfoFromCtx(ctx).GroupIDs, po) { return errors.New("permission denied") } @@ -126,7 +126,7 @@ func (s *submissionRepo) CreateSelfTest(ctx context.Context, selfTest *biz.SelfT func (s *submissionRepo) GetSubmission(ctx context.Context, submissionID string, contestID int64) (*biz.Submission, error) { id, err := strconv.ParseInt(submissionID, 10, 64) - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID var res *biz.Submission if err != nil { // get from redis @@ -180,12 +180,12 @@ func (s *submissionRepo) GetSubmission(ctx context.Context, submissionID string, return res, nil } -func (s *submissionRepo) GetSubmissions(ctx context.Context, contestID int64, problemId int64) ([]*biz.Submission, error) { - userID := util.GetUserInfoFromCtx(ctx).UserId +func (s *submissionRepo) GetSubmissions(ctx context.Context, contestID int64, problemID int64) ([]*biz.Submission, error) { + userID := util.GetUserInfoFromCtx(ctx).UserID po, err := s.data.db.Submission.Query(). Select(submission.FieldID, submission.FieldState, submission.FieldPoint, submission.FieldLanguage, submission.FieldCreateTime, submission.FieldLanguage). - Where(submission.UserIDEQ(userID), submission.ProblemIDEQ(problemId)). + Where(submission.UserIDEQ(userID), submission.ProblemIDEQ(problemID)). Order(ent.Desc(submission.FieldCreateTime)). All(ctx) if err != nil { @@ -195,7 +195,7 @@ func (s *submissionRepo) GetSubmissions(ctx context.Context, contestID int64, pr for _, v := range po { submissions = append(submissions, &biz.Submission{ ID: strconv.FormatInt(v.ID, 10), - ProblemID: problemId, + ProblemID: problemID, Language: v.Language, Status: v.State, Point: v.Point, @@ -217,7 +217,7 @@ func (s *submissionRepo) CreateSubmission(ctx context.Context, submission *biz.S s.log.Errorf("unmarshal problem failed: %v", err) return fmt.Errorf("problem %d is not exist", submission.ProblemID) } - if !contestValidator(util.GetUserInfoFromCtx(ctx).GroupIds, po) { + if !contestValidator(util.GetUserInfoFromCtx(ctx).GroupIDs, po) { return errors.New("permission denied") } diff --git a/app/user/contest/internal/judge/goJudge.go b/app/user/contest/internal/judge/goJudge.go deleted file mode 100644 index 19ee5ff..0000000 --- a/app/user/contest/internal/judge/goJudge.go +++ /dev/null @@ -1,77 +0,0 @@ -package judge - -import ( - "context" - "github.com/go-kratos/kratos/v2/log" - "github.com/google/uuid" - amqp "github.com/rabbitmq/amqp091-go" -) - -// GoJudge to -type GoJudge struct { - // - judge Judge - - // - caseCacheManager CaseCacheManager - - log log.Helper - - ch *amqp.Channel - - loopGroups []*LoopGroup -} - -type CaseCacheManager struct { -} - -type LoopGroup struct { - uuid uuid.UUID - closes []func() -} - -func (group *LoopGroup) Close() { - for _, c := range group.closes { - c() - } - //TODO wait if passable -} - -func (group *LoopGroup) Append(other *LoopGroup) { - group.closes = append(group.closes, other.closes...) -} - -func (g GoJudge) handleSubmit(ctx context.Context, v *Submit) error { - return nil -} - -func (g GoJudge) handleSelfTest(ctx context.Context, v *SelfTest) error { - return nil -} - -func (g GoJudge) StartOneLoop(ctx context.Context) (*LoopGroup, error) { - closes := make([]func(), 0) - closes = append(closes, g.judge.StartLoopOnSubmit(ctx, g.ch, g.handleSubmit)) - closes = append(closes, g.judge.StartLoopOnSelfTest(ctx, g.ch, g.handleSelfTest)) - newUUID, err := uuid.NewUUID() - if err != nil { - return nil, err - } - newLoopGroup := &LoopGroup{ - uuid: newUUID, - closes: closes, - } - g.loopGroups = append(g.loopGroups, newLoopGroup) - return newLoopGroup, nil -} - -func (g GoJudge) RefreshCaseCache(ctx context.Context) error { return nil } - -func (g GoJudge) CloseAll() { - for _, group := range g.loopGroups { - for _, c := range group.closes { - c() - } - } - //TODO wait if passable -} diff --git a/app/user/contest/internal/judge/judge.go b/app/user/contest/internal/judge/judge.go deleted file mode 100644 index cd7da34..0000000 --- a/app/user/contest/internal/judge/judge.go +++ /dev/null @@ -1,131 +0,0 @@ -package judge - -import ( - "context" - "encoding/json" - "sastoj/app/user/contest/internal/biz" - - "github.com/go-kratos/kratos/v2/log" - amqp "github.com/rabbitmq/amqp091-go" -) - -// Judge allows all judges to handling messages from an amqp.Channel -type Judge struct { - log *log.Helper -} - -type Submit = biz.Submission -type SelfTest = biz.SelfTest - -const ( - submit = "submit" - selfTest = "selfTest" -) - -// StartLoopOnSubmit start a loop for handling messages from an amqp.Channel and return a function to stop the loop. -// The handle function is used to handling Submit, which interact with the judge, then save the result and do not require to return. -func (g Judge) StartLoopOnSubmit(ctx context.Context, ch *amqp.Channel, handle func(ctx context.Context, v *Submit) error) (close func()) { - control := make(chan bool) - _, err := ch.QueueDeclare( - submit, - false, - false, - false, - false, - nil, - ) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSubmit) Start Failed: Failed to declare a queue: %s", err) - } - go func() { - for { - select { - case <-control: - return - default: - messages, err := ch.ConsumeWithContext( - ctx, - submit, - "", - true, - false, - false, - false, - nil, - ) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSubmit) Error: Failed consume message: %s", err) - } - for d := range messages { - body := d.Body - g.log.Infof("Go-Judge Consumer(OnSubmit) Received a message: %s", body) - v := &Submit{} - err := json.Unmarshal(body, v) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSubmit) Error: Failed to de-serialise a submit: %s", err) - } - if handle(ctx, v) != nil { - g.log.Errorf("Go-Judge Consumer(OnSubmit) Error: Failed to handle a submit: %s", err) - } - } - } - } - }() - return func() { - control <- false - } -} - -// StartLoopOnSelfTest start a loop for handling messages from an amqp.Channel and return a function to stop the loop. -// The handle function is used to handling SelfTest, which interact with the judge, then save the result and do not require to return. -func (g Judge) StartLoopOnSelfTest(ctx context.Context, ch *amqp.Channel, handle func(ctx context.Context, v *SelfTest) error) (close func()) { - control := make(chan bool) - _, err := ch.QueueDeclare( - selfTest, - false, - false, - false, - false, - nil, - ) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSelfTest) Start Failed: Failed to declare a queue: %s", err) - } - go func() { - for { - select { - case <-control: - return - default: - messages, err := ch.ConsumeWithContext( - ctx, - selfTest, - "", - true, - false, - false, - false, - nil, - ) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSelfTest) Error: Failed consume message: %s", err) - } - for d := range messages { - body := d.Body - g.log.Infof("Go-Judge Consumer(OnSelfTest) Received a message: %s", body) - v := &SelfTest{} - err := json.Unmarshal(body, v) - if err != nil { - g.log.Errorf("Go-Judge Consumer(OnSelfTest) Error: Failed to de-serialise a self test: %s", err) - } - if handle(ctx, v) != nil { - g.log.Errorf("Go-Judge Consumer(OnSelfTest) Error: Failed to handle a self test: %s", err) - } - } - } - } - }() - return func() { - control <- false - } -} diff --git a/app/user/contest/internal/service/contest.go b/app/user/contest/internal/service/contest.go index 053f957..fe68d69 100644 --- a/app/user/contest/internal/service/contest.go +++ b/app/user/contest/internal/service/contest.go @@ -9,7 +9,7 @@ import ( ) func (s *ContestService) GetContests(ctx context.Context, _ *pb.GetContestsRequest) (*pb.GetContestsReply, error) { - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID rv, err := s.contestUc.ListContest(ctx, userID) if err != nil { return nil, err @@ -32,8 +32,8 @@ func (s *ContestService) GetContests(ctx context.Context, _ *pb.GetContestsReque return reply, nil } func (s *ContestService) JoinContest(ctx context.Context, req *pb.JoinContestRequest) (*pb.JoinContestReply, error) { - userID := util.GetUserInfoFromCtx(ctx).UserId - err := s.contestUc.JoinContest(ctx, userID, req.GetContestId(), req.Body.IsJoin) + userID := util.GetUserInfoFromCtx(ctx).UserID + err := s.contestUc.JoinContest(ctx, userID, req.ContestId, req.Body.IsJoin) if err != nil { return nil, err } diff --git a/app/user/contest/internal/service/submission.go b/app/user/contest/internal/service/submission.go index e86f533..f45cfbd 100644 --- a/app/user/contest/internal/service/submission.go +++ b/app/user/contest/internal/service/submission.go @@ -13,7 +13,7 @@ import ( func (s *ContestService) Submit(ctx context.Context, req *pb.SubmitRequest) (*pb.SubmitReply, error) { caseVer, err := s.getProblemCaseVer(ctx, req.ProblemId) - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID id := uuid.NewString() if err != nil { return nil, err @@ -41,7 +41,7 @@ func (s *ContestService) Submit(ctx context.Context, req *pb.SubmitRequest) (*pb func (s *ContestService) SelfTest(ctx context.Context, req *pb.SelfTestRequest) (*pb.SelfTestReply, error) { selfTestID := uuid.NewString() - userID := util.GetUserInfoFromCtx(ctx).UserId + userID := util.GetUserInfoFromCtx(ctx).UserID err := s.submitUc.CreateSelfTest(ctx, &biz.SelfTest{ ID: selfTestID, UserID: userID, diff --git a/app/user/gateway/internal/biz/problem.go b/app/user/gateway/internal/biz/problem.go index 9d90783..73a07ce 100644 --- a/app/user/gateway/internal/biz/problem.go +++ b/app/user/gateway/internal/biz/problem.go @@ -10,7 +10,7 @@ type Problem struct { ID int64 Title string Content string - Point int16 + Score int16 Index int16 } diff --git a/app/user/gateway/internal/biz/submission.go b/app/user/gateway/internal/biz/submission.go index 8ddf53c..b66f2b1 100644 --- a/app/user/gateway/internal/biz/submission.go +++ b/app/user/gateway/internal/biz/submission.go @@ -15,8 +15,8 @@ type Submission struct { Status int16 `json:"state,omitempty"` Point int16 `json:"point,omitempty"` CreateTime time.Time `json:"create_time"` - TotalTime int32 `json:"total_time,omitempty"` - MaxMemory int32 `json:"max_memory,omitempty"` + TotalTime uint64 `json:"total_time,omitempty"` + MaxMemory uint64 `json:"max_memory,omitempty"` Language string `json:"language,omitempty"` } diff --git a/app/user/gateway/internal/data/data.go b/app/user/gateway/internal/data/data.go index 534aa21..d0155d5 100644 --- a/app/user/gateway/internal/data/data.go +++ b/app/user/gateway/internal/data/data.go @@ -107,7 +107,7 @@ func NewData(c *conf.Data, cc v1.ContestClient, logger log.Logger) (*Data, func( problems = append(problems, &biz.Problem{ ID: problem.Id, Title: problem.Title, - Point: int16(problem.Point), + Score: int16(problem.Score), Index: int16(problem.Index), }) problemDTO, err := cc.GetProblem(context.Background(), &v1.GetProblemRequest{ @@ -120,7 +120,7 @@ func NewData(c *conf.Data, cc v1.ContestClient, logger log.Logger) (*Data, func( ID: problem.Id, Title: problem.Title, Content: problemDTO.Content, - Point: int16(problem.Point), + Score: int16(problem.Score), } } cache.contest2problems[contest.Id] = problems diff --git a/app/user/gateway/internal/data/submission.go b/app/user/gateway/internal/data/submission.go index c19f9d8..5723e96 100644 --- a/app/user/gateway/internal/data/submission.go +++ b/app/user/gateway/internal/data/submission.go @@ -20,8 +20,8 @@ type submissionDTO struct { Status int16 `json:"state,omitempty"` Point int16 `json:"point,omitempty"` CreateTime time.Time `json:"create_time"` - TotalTime int32 `json:"total_time,omitempty"` - MaxMemory int32 `json:"max_memory,omitempty"` + TotalTime uint64 `json:"total_time,omitempty"` + MaxMemory uint64 `json:"max_memory,omitempty"` Language string `json:"language,omitempty"` Token string `json:"secret,omitempty"` } diff --git a/app/user/gateway/internal/service/problem.go b/app/user/gateway/internal/service/problem.go index fc6de1b..49d8d3c 100644 --- a/app/user/gateway/internal/service/problem.go +++ b/app/user/gateway/internal/service/problem.go @@ -15,7 +15,7 @@ func (s *GatewayService) GetProblems(ctx context.Context, req *pb.GetProblemsReq reply.Problems = append(reply.Problems, &pb.GetProblemsReply_Problem{ Id: p.ID, Title: p.Title, - Point: int32(p.Point), + Score: int32(p.Score), Index: int32(p.Index), }) } @@ -30,6 +30,6 @@ func (s *GatewayService) GetProblem(ctx context.Context, req *pb.GetProblemReque Id: rv.ID, Title: rv.Title, Content: rv.Content, - Point: int32(rv.Point), + Score: int32(rv.Score), }, nil } diff --git a/pkg/error/handle.go b/pkg/error/handle.go index b687779..fcb2643 100644 --- a/pkg/error/handle.go +++ b/pkg/error/handle.go @@ -9,8 +9,7 @@ import ( // FromError : Convert kratos error to Local-error , mainly add customized error code func FromError(err error) *LocalError { - var kratosError *kerr.Error - kratosError = kerr.FromError(err) + kratosError := kerr.FromError(err) if kratosError.Status.Reason == "VALIDATOR" { return &LocalError{ Code: InvalidParamError.Code, diff --git a/pkg/file/file.go b/pkg/file/file.go index 5436b3a..1af8f11 100644 --- a/pkg/file/file.go +++ b/pkg/file/file.go @@ -14,26 +14,26 @@ type Manager struct { } // GetJudgeConfig get judge config from file system -func (m *Manager) GetJudgeConfig(problemId int64) (*u.JudgeConfig, error) { - return u.GetConfig(problemId, m.location) +func (m *Manager) GetJudgeConfig(problemID int64) (*u.JudgeConfig, error) { + return u.GetConfig(problemID, m.location) } // SetJudgeConfig save judge config to file system -func (m *Manager) SetJudgeConfig(problemId int64, config *u.JudgeConfig) error { - return u.SetConfig(problemId, m.location, config) +func (m *Manager) SetJudgeConfig(problemID int64, config *u.JudgeConfig) error { + return u.SetConfig(problemID, m.location, config) } // FetchCase fetch test case from file system -func (m *Manager) FetchCase(problemId int64, fileIn string, fileAns string) (in []byte, ans []byte, err error) { - location := m.location + "/" + strconv.FormatInt(problemId, 10) + "/testdata/" +func (m *Manager) FetchCase(problemID int64, fileIn string, fileAns string) (in []byte, ans []byte, err error) { + location := m.location + "/" + strconv.FormatInt(problemID, 10) + "/testdata/" in, err = os.ReadFile(location + "/" + fileIn) ans, err = os.ReadFile(location + "/" + fileAns) return } // DeleteCase delete case from file system -func (m *Manager) DeleteCase(problemId int64) error { - location := m.location + "/" + strconv.FormatInt(problemId, 10) + "/" +func (m *Manager) DeleteCase(problemID int64) error { + location := m.location + "/" + strconv.FormatInt(problemID, 10) + "/" if _, err := os.Stat(location); err == nil { err := os.RemoveAll(location) if err != nil { @@ -44,8 +44,8 @@ func (m *Manager) DeleteCase(problemId int64) error { } // HandleHydroCase handle hydro case from file system -func (m *Manager) HandleHydroCase(problemId int64) error { - location := m.location + "/" + strconv.FormatInt(problemId, 10) + "/" +func (m *Manager) HandleHydroCase(problemID int64) error { + location := m.location + "/" + strconv.FormatInt(problemID, 10) + "/" dir, err := os.ReadDir(location + "config") if err != nil { return err @@ -66,13 +66,13 @@ func (m *Manager) HandleHydroCase(problemId int64) error { } // CompressAndArchive compress and archive case from file system -func (m *Manager) CompressAndArchive(problemId int64) error { - return u.CompressAndArchive(m.location+"/"+strconv.FormatInt(problemId, 10)+"testdata"+"/", ".tar.zst") +func (m *Manager) CompressAndArchive(problemID int64) error { + return u.CompressAndArchive(m.location+"/"+strconv.FormatInt(problemID, 10)+"testdata"+"/", ".tar.zst") } // CaseCrlfToLf set .in and .out files crlf to lf -func (m *Manager) CaseCrlfToLf(problemId int64, config *u.JudgeConfig) error { - location := m.location + "/" + strconv.FormatInt(problemId, 10) + "/" +func (m *Manager) CaseCrlfToLf(problemID int64, config *u.JudgeConfig) error { + location := m.location + "/" + strconv.FormatInt(problemID, 10) + "/" wg := sync.WaitGroup{} wg.Add(len(config.Task.Cases)) errChannel := make(chan error) @@ -110,8 +110,8 @@ func (m *Manager) CaseCrlfToLf(problemId int64, config *u.JudgeConfig) error { } // SaveAndExtractCase save and extract case file to file system -func (m *Manager) SaveAndExtractCase(casesFile multipart.File, filename string, problemId int64) error { - location := m.location + "/" + strconv.FormatInt(problemId, 10) + "/" +func (m *Manager) SaveAndExtractCase(casesFile multipart.File, filename string, problemID int64) error { + location := m.location + "/" + strconv.FormatInt(problemID, 10) + "/" err := os.Mkdir(location, os.ModePerm) if err != nil { return err diff --git a/pkg/middleware/auth/auth.go b/pkg/middleware/auth/auth.go index b0ca340..5a6748c 100644 --- a/pkg/middleware/auth/auth.go +++ b/pkg/middleware/auth/auth.go @@ -24,8 +24,8 @@ var ( ) type Claims struct { - UserId int64 `json:"user_id"` - GroupIds []int64 `json:"group_ids"` + UserID int64 `json:"user_id"` + GroupIDs []int64 `json:"group_ids"` GroupName string `json:"group_name"` } @@ -62,14 +62,14 @@ func Auth(secret string, defaultRule string, customApiMap map[string]string) mid if err != nil { return nil, err } - log.Infof("receive request from user: %d", claimsInfo.UserId) + log.Infof("receive request from user: %d", claimsInfo.UserID) //put claims into context so that other service could retrieve it ctx = context.WithValue(ctx, "userInfo", claimsInfo) // if the user is an admin, then return directly if strings.HasPrefix(claimsInfo.GroupName, AdminGroup) { - log.Infof("receive request from admin: %d", claimsInfo.UserId) + log.Infof("receive request from admin: %d", claimsInfo.UserID) return handler(ctx, req) } @@ -135,25 +135,21 @@ func parseClaims(claims jwt.Claims) (*Claims, error) { if err != nil { return nil, ErrMissingClaims } - groupIds := make([]int64, 0) + groupIDs := make([]int64, 0) for _, id := range claims.(jwt.MapClaims)["group_ids"].([]interface{}) { groupID, err := id.(json.Number).Int64() if err != nil { return nil, ErrMissingClaims } - groupIds = append(groupIds, groupID) - } - log.Info(groupIds) - if err != nil { - return nil, ErrMissingClaims + groupIDs = append(groupIDs, groupID) } groupName, ok := claims.(jwt.MapClaims)["group_name"].(string) if !ok { return nil, ErrMissingClaims } return &Claims{ - UserId: userID, - GroupIds: groupIds, + UserID: userID, + GroupIDs: groupIDs, GroupName: groupName, }, nil } diff --git a/pkg/middleware/limiter/api_limiter.go b/pkg/middleware/limiter/api_limiter.go index ab8e28a..9388282 100644 --- a/pkg/middleware/limiter/api_limiter.go +++ b/pkg/middleware/limiter/api_limiter.go @@ -26,7 +26,7 @@ func ApiLimiterMiddleware(apis map[string]time.Duration) middleware.Middleware { if !exists { return handler(ctx, req) } - userID := ctx.Value("userInfo").(*auth.Claims).UserId + userID := ctx.Value("userInfo").(*auth.Claims).UserID prevTime, exists := blackList[userID] log.Debug(fmt.Sprintf("userID: %d, prevTime: %v, exists: %v", userID, prevTime, exists)) if exists && time.Now().Before(prevTime) { diff --git a/pkg/problem/judge_simple.go b/pkg/problem/judge_simple.go index 9c484ba..f52d1c6 100644 --- a/pkg/problem/judge_simple.go +++ b/pkg/problem/judge_simple.go @@ -13,7 +13,7 @@ func (s *SimpleTask) judging(cases []bool) (taskPoint int16, casesPoint []int16, if len(cases) != len(s.task.Cases) { return 0, nil, errors.New("cases and tasks not match") } - res := make([]int16, len(cases), len(cases)) + res := make([]int16, len(cases)) taskPoint = 0 for _, c := range s.task.Cases { i := util.GetCaseIndex(c.Input) - 1 diff --git a/pkg/problem/judge_subtask_min.go b/pkg/problem/judge_subtask_min.go index 6bb6dd5..e35c36b 100644 --- a/pkg/problem/judge_subtask_min.go +++ b/pkg/problem/judge_subtask_min.go @@ -10,7 +10,7 @@ type SubtaskMin struct { func (s *SubtaskMin) judging(cases []bool) (tasksPoint int16, casesPoint []int16, err error) { tasksPoint = s.subtasks.Score - casesPoint = make([]int16, len(cases), len(cases)) + casesPoint = make([]int16, len(cases)) err = nil flag := true for _, c := range s.subtasks.Cases { diff --git a/pkg/util/convert_type.go b/pkg/util/convert_type.go index 1aa92f3..98cd298 100644 --- a/pkg/util/convert_type.go +++ b/pkg/util/convert_type.go @@ -1,7 +1,6 @@ package util import ( - api "sastoj/api/sastoj/admin/admin/service/v1" pb "sastoj/api/sastoj/admin/admin/service/v1" "sastoj/ent/contest" "sastoj/ent/problem" @@ -43,7 +42,7 @@ func ContestStateToEnt(state int32) (contest.State, error) { case 5: return contest.StateDELETED, nil default: - return "", api.ErrorContestInvalid("contest state invalid") + return "", pb.ErrorContestInvalid("contest state invalid") } } @@ -69,7 +68,7 @@ func UserStateToEnt(state int16) (user.State, error) { case 2: return user.StateINACTIVE, nil default: - return "", api.ErrorUserInvalid("user state invalid") + return "", pb.ErrorUserInvalid("user state invalid") } } diff --git a/pkg/util/init_db.go b/pkg/util/init_db.go index af06602..f7759d6 100644 --- a/pkg/util/init_db.go +++ b/pkg/util/init_db.go @@ -43,8 +43,6 @@ func InsertDefaultUser(ctx context.Context, client *ent.Client, rootGroup *ent.G func ExistRootUser(ctx context.Context, client *ent.Client) bool { rootUser := client.User.Query().Where(user.HasGroupsWith(group.IsRootEQ(true))).FirstX(ctx) - if rootUser != nil { - return true - } - return false + + return rootUser != nil } diff --git a/pkg/util/string.go b/pkg/util/string.go index 7ad89f4..8ed6a4b 100644 --- a/pkg/util/string.go +++ b/pkg/util/string.go @@ -70,7 +70,7 @@ func StringRemoveLineEndSpace(a string) string { } func Crlf2lf(s string) string { - res := strings.Replace(s, "\r\n", "\n", -1) + res := strings.ReplaceAll(s, "\r\n", "\n") return res } diff --git a/pkg/util/toml.go b/pkg/util/toml.go index bd80b75..5b22275 100644 --- a/pkg/util/toml.go +++ b/pkg/util/toml.go @@ -1,9 +1,10 @@ package util import ( - "github.com/pelletier/go-toml/v2" "os" "strconv" + + "github.com/pelletier/go-toml/v2" ) type Cases struct { @@ -40,24 +41,24 @@ type JudgeConfig struct { Task Task } -func ReadTomlFile(problemId int64, baseLocation string) ([]byte, error) { - tomlFile, err := os.ReadFile(baseLocation + "/" + strconv.FormatInt(problemId, 10) + "/testdata/config.toml") +func ReadTomlFile(problemID int64, baseLocation string) ([]byte, error) { + tomlFile, err := os.ReadFile(baseLocation + "/" + strconv.FormatInt(problemID, 10) + "/testdata/config.toml") if err != nil { return nil, err } return tomlFile, nil } -func WriteTomlFile(problemId int64, baseLocation string, tomlFile []byte) error { - err := os.WriteFile(baseLocation+"/"+strconv.FormatInt(problemId, 10)+"/testdata/config.toml", tomlFile, os.ModePerm) +func WriteTomlFile(problemID int64, baseLocation string, tomlFile []byte) error { + err := os.WriteFile(baseLocation+"/"+strconv.FormatInt(problemID, 10)+"/testdata/config.toml", tomlFile, os.ModePerm) if err != nil { return err } return nil } -func GetConfig(problemId int64, baseLocation string) (config *JudgeConfig, err error) { - tomlFile, err := ReadTomlFile(problemId, baseLocation) +func GetConfig(problemID int64, baseLocation string) (config *JudgeConfig, err error) { + tomlFile, err := ReadTomlFile(problemID, baseLocation) if err != nil { return nil, err } @@ -68,10 +69,10 @@ func GetConfig(problemId int64, baseLocation string) (config *JudgeConfig, err e return } -func SetConfig(problemId int64, baseLocation string, config *JudgeConfig) error { +func SetConfig(problemID int64, baseLocation string, config *JudgeConfig) error { tomlFile, err := toml.Marshal(config) if err != nil { return err } - return WriteTomlFile(problemId, baseLocation, tomlFile) + return WriteTomlFile(problemID, baseLocation, tomlFile) }