diff --git a/node/internal/actors/control_api.go b/node/internal/actors/control_api.go index eec5a7bc..7da01e12 100644 --- a/node/internal/actors/control_api.go +++ b/node/internal/actors/control_api.go @@ -101,6 +101,7 @@ func (a *ControlAPI) Receive(ctx *goakt.ReceiveContext) { if err != nil { _ = a.shutdown() ctx.Err(err) + return } a.logger.Info("Control API NATS server is running", slog.String("name", ctx.Self().Name())) default: @@ -385,15 +386,28 @@ func (api *ControlAPI) handleADeploy(m *nats.Msg) { return } - protoResp, ok := askResp.(*actorproto.WorkloadStarted) + protoResp, ok := askResp.(*actorproto.Envelope) if !ok { api.logger.Error("Start workload response from agent was not the correct type") models.RespondEnvelope(m, RunResponseType, 500, "", "Agent returned the wrong data type") return } - models.RespondEnvelope(m, RunResponseType, 200, startResponseFromProto(protoResp), "") + if protoResp.Error != nil { + api.logger.Error("Agent returned an error", slog.Any("error", protoResp.Error)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("agent returned an error: %s", protoResp.Error)) + return + } + var workloadStarted actorproto.WorkloadStarted + err = protoResp.Payload.UnmarshalTo(&workloadStarted) + if err != nil { + api.logger.Error("Failed to unmarshal workload started response", slog.Any("error", err)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("failed to unmarshal workload started response: %s", err)) + return + } + + models.RespondEnvelope(m, RunResponseType, 200, startResponseFromProto(&workloadStarted), "") } func (api *ControlAPI) handleDeploy(m *nats.Msg) { @@ -420,14 +434,28 @@ func (api *ControlAPI) handleDeploy(m *nats.Msg) { return } - protoResp, ok := askResp.(*actorproto.WorkloadStarted) + protoResp, ok := askResp.(*actorproto.Envelope) if !ok { api.logger.Error("Start workload response from agent was not the correct type") models.RespondEnvelope(m, RunResponseType, 500, "", "Agent returned the wrong data type") return } - models.RespondEnvelope(m, RunResponseType, 200, startResponseFromProto(protoResp), "") + if protoResp.Error != nil { + api.logger.Error("Agent returned an error", slog.Any("error", protoResp.Error)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("agent returned an error: %s", protoResp.Error)) + return + } + + var workloadStarted actorproto.WorkloadStarted + err = protoResp.Payload.UnmarshalTo(&workloadStarted) + if err != nil { + api.logger.Error("Failed to unmarshal workload started response", slog.Any("error", err)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("failed to unmarshal workload started response: %s", err)) + return + } + + models.RespondEnvelope(m, RunResponseType, 200, startResponseFromProto(&workloadStarted), "") } func (api *ControlAPI) handleUndeploy(m *nats.Msg) { @@ -454,14 +482,28 @@ func (api *ControlAPI) handleUndeploy(m *nats.Msg) { return } - protoResp, ok := askResp.(*actorproto.WorkloadStopped) + protoResp, ok := askResp.(*actorproto.Envelope) if !ok { api.logger.Error("Workload stop response from agent was not the correct type") models.RespondEnvelope(m, StopResponseType, 500, "", "Agent returned the wrong data type for workload stop") return } - models.RespondEnvelope(m, StopResponseType, 200, stopResponseFromProto(protoResp), "") + if protoResp.Error != nil { + api.logger.Error("Agent returned an error", slog.Any("error", protoResp.Error)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("agent returned an error: %s", protoResp.Error)) + return + } + + var workloadStopped actorproto.WorkloadStopped + err = protoResp.Payload.UnmarshalTo(&workloadStopped) + if err != nil { + api.logger.Error("Failed to unmarshal workload started response", slog.Any("error", err)) + models.RespondEnvelope(m, RunResponseType, 500, "", fmt.Sprintf("failed to unmarshal workload started response: %s", err)) + return + } + + models.RespondEnvelope(m, StopResponseType, 200, stopResponseFromProto(&workloadStopped), "") } func (api *ControlAPI) handleInfo(m *nats.Msg) { diff --git a/node/internal/actors/direct_start_agent.go b/node/internal/actors/direct_start_agent.go index e41934f5..8abe5167 100644 --- a/node/internal/actors/direct_start_agent.go +++ b/node/internal/actors/direct_start_agent.go @@ -15,6 +15,7 @@ import ( "github.com/synadia-io/nex/models" goakt "github.com/tochemey/goakt/v2/actors" "github.com/tochemey/goakt/v2/goaktpb" + "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" actorproto "github.com/synadia-io/nex/node/internal/actors/pb" @@ -52,34 +53,58 @@ func (a *DirectStartAgent) PostStop(ctx context.Context) error { } func (a *DirectStartAgent) Receive(ctx *goakt.ReceiveContext) { + resp := new(actorproto.Envelope) + switch m := ctx.Message().(type) { case *goaktpb.PostStart: a.self = ctx.Self() a.startedAt = time.Now() a.logger.Info("Direct start agent is running", slog.String("name", ctx.Self().Name())) case *actorproto.StartWorkload: + var err error a.logger.Debug("StartWorkload received", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadName)) - resp, err := a.startWorkload(m) + ws, err := a.startWorkload(m) + if err != nil { + a.logger.Error("Failed to start workload", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadName), slog.Any("err", err)) + resp.Error = &actorproto.Error{Message: err.Error()} + ctx.Response(resp) + return + } + resp.Payload, err = anypb.New(ws) if err != nil { - ctx.Err(err) + a.logger.Error("Failed to marshal workload started", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadName), slog.Any("err", err)) + resp.Error = &actorproto.Error{Message: err.Error()} + ctx.Response(resp) return } - a.runRequest[resp.Id] = m + + a.runRequest[ws.Id] = m ctx.Response(resp) case *actorproto.StopWorkload: a.logger.Debug("StopWorkload received", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadId)) - resp, err := a.stopWorkload(m) + ws, err := a.stopWorkload(m) + if err != nil { + a.logger.Error("Failed to stop workload", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadId), slog.Any("err", err)) + resp.Error = &actorproto.Error{Message: err.Error()} + ctx.Response(resp) + return + } + resp.Payload, err = anypb.New(ws) if err != nil { - ctx.Err(err) + a.logger.Error("Failed to marshal workload stopped", slog.String("name", ctx.Self().Name()), slog.String("workload", m.WorkloadId), slog.Any("err", err)) + resp.Error = &actorproto.Error{Message: err.Error()} + ctx.Response(resp) return } + delete(a.runRequest, m.WorkloadId) ctx.Response(resp) case *actorproto.QueryWorkloads: a.logger.Debug("QueryWorkloads received", slog.String("name", ctx.Self().Name())) resp, err := a.queryWorkloads(m) if err != nil { - ctx.Err(err) + a.logger.Error("Failed to query workloads", slog.String("name", ctx.Self().Name()), slog.Any("err", err)) + ctx.Unhandled() return } ctx.Response(resp) @@ -109,7 +134,7 @@ func (a *DirectStartAgent) Receive(ctx *goakt.ReceiveContext) { workloads, err := a.queryWorkloads(&actorproto.QueryWorkloads{}) if err != nil { a.logger.Error("Failed to query workloads", slog.String("name", ctx.Self().Name()), slog.Any("err", err)) - ctx.Err(err) + ctx.Unhandled() return } diff --git a/node/internal/actors/external_agent.go b/node/internal/actors/external_agent.go index 9ebf6668..b924fde9 100644 --- a/node/internal/actors/external_agent.go +++ b/node/internal/actors/external_agent.go @@ -116,8 +116,6 @@ func (a *ExternalAgent) RegisteredAgentReceive(ctx *goakt.ReceiveContext) { func (a *ExternalAgent) startWorkload(ctx *goakt.ReceiveContext, req *actorproto.StartWorkload) { // TODO: send start workload request to agent - - // TODO: handle result (ctx.Error, etc) } func (a *ExternalAgent) startBinary() error { diff --git a/node/internal/actors/pb/agents.pb.go b/node/internal/actors/pb/agents.pb.go index f8bd5b97..138db760 100644 --- a/node/internal/actors/pb/agents.pb.go +++ b/node/internal/actors/pb/agents.pb.go @@ -13,6 +13,7 @@ package actorproto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + anypb "google.golang.org/protobuf/types/known/anypb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -25,6 +26,104 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type Envelope struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payload *anypb.Any `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *Envelope) Reset() { + *x = Envelope{} + mi := &file_agents_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Envelope) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Envelope) ProtoMessage() {} + +func (x *Envelope) ProtoReflect() protoreflect.Message { + mi := &file_agents_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Envelope.ProtoReflect.Descriptor instead. +func (*Envelope) Descriptor() ([]byte, []int) { + return file_agents_proto_rawDescGZIP(), []int{0} +} + +func (x *Envelope) GetPayload() *anypb.Any { + if x != nil { + return x.Payload + } + return nil +} + +func (x *Envelope) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type Error struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *Error) Reset() { + *x = Error{} + mi := &file_agents_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Error) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Error) ProtoMessage() {} + +func (x *Error) ProtoReflect() protoreflect.Message { + mi := &file_agents_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Error.ProtoReflect.Descriptor instead. +func (*Error) Descriptor() ([]byte, []int) { + return file_agents_proto_rawDescGZIP(), []int{1} +} + +func (x *Error) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + type PingNode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -33,7 +132,7 @@ type PingNode struct { func (x *PingNode) Reset() { *x = PingNode{} - mi := &file_agents_proto_msgTypes[0] + mi := &file_agents_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +144,7 @@ func (x *PingNode) String() string { func (*PingNode) ProtoMessage() {} func (x *PingNode) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[0] + mi := &file_agents_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +157,7 @@ func (x *PingNode) ProtoReflect() protoreflect.Message { // Deprecated: Use PingNode.ProtoReflect.Descriptor instead. func (*PingNode) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{0} + return file_agents_proto_rawDescGZIP(), []int{2} } type PingNodeResponse struct { @@ -77,7 +176,7 @@ type PingNodeResponse struct { func (x *PingNodeResponse) Reset() { *x = PingNodeResponse{} - mi := &file_agents_proto_msgTypes[1] + mi := &file_agents_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -89,7 +188,7 @@ func (x *PingNodeResponse) String() string { func (*PingNodeResponse) ProtoMessage() {} func (x *PingNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[1] + mi := &file_agents_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -102,7 +201,7 @@ func (x *PingNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingNodeResponse.ProtoReflect.Descriptor instead. func (*PingNodeResponse) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{1} + return file_agents_proto_rawDescGZIP(), []int{3} } func (x *PingNodeResponse) GetNodeId() string { @@ -165,7 +264,7 @@ type PingAgent struct { func (x *PingAgent) Reset() { *x = PingAgent{} - mi := &file_agents_proto_msgTypes[2] + mi := &file_agents_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -177,7 +276,7 @@ func (x *PingAgent) String() string { func (*PingAgent) ProtoMessage() {} func (x *PingAgent) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[2] + mi := &file_agents_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -190,7 +289,7 @@ func (x *PingAgent) ProtoReflect() protoreflect.Message { // Deprecated: Use PingAgent.ProtoReflect.Descriptor instead. func (*PingAgent) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{2} + return file_agents_proto_rawDescGZIP(), []int{4} } func (x *PingAgent) GetNamespace() string { @@ -219,7 +318,7 @@ type PingWorkload struct { func (x *PingWorkload) Reset() { *x = PingWorkload{} - mi := &file_agents_proto_msgTypes[3] + mi := &file_agents_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -231,7 +330,7 @@ func (x *PingWorkload) String() string { func (*PingWorkload) ProtoMessage() {} func (x *PingWorkload) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[3] + mi := &file_agents_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -244,7 +343,7 @@ func (x *PingWorkload) ProtoReflect() protoreflect.Message { // Deprecated: Use PingWorkload.ProtoReflect.Descriptor instead. func (*PingWorkload) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{3} + return file_agents_proto_rawDescGZIP(), []int{5} } func (x *PingWorkload) GetNamespace() string { @@ -283,7 +382,7 @@ type PingAgentResponse struct { func (x *PingAgentResponse) Reset() { *x = PingAgentResponse{} - mi := &file_agents_proto_msgTypes[4] + mi := &file_agents_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -295,7 +394,7 @@ func (x *PingAgentResponse) String() string { func (*PingAgentResponse) ProtoMessage() {} func (x *PingAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[4] + mi := &file_agents_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -308,7 +407,7 @@ func (x *PingAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingAgentResponse.ProtoReflect.Descriptor instead. func (*PingAgentResponse) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{4} + return file_agents_proto_rawDescGZIP(), []int{6} } func (x *PingAgentResponse) GetNodeId() string { @@ -363,7 +462,7 @@ type PingWorkloadResponse struct { func (x *PingWorkloadResponse) Reset() { *x = PingWorkloadResponse{} - mi := &file_agents_proto_msgTypes[5] + mi := &file_agents_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -375,7 +474,7 @@ func (x *PingWorkloadResponse) String() string { func (*PingWorkloadResponse) ProtoMessage() {} func (x *PingWorkloadResponse) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[5] + mi := &file_agents_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -388,7 +487,7 @@ func (x *PingWorkloadResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingWorkloadResponse.ProtoReflect.Descriptor instead. func (*PingWorkloadResponse) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{5} + return file_agents_proto_rawDescGZIP(), []int{7} } func (x *PingWorkloadResponse) GetWorkload() *WorkloadSummary { @@ -410,7 +509,7 @@ type RunningWorkload struct { func (x *RunningWorkload) Reset() { *x = RunningWorkload{} - mi := &file_agents_proto_msgTypes[6] + mi := &file_agents_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -422,7 +521,7 @@ func (x *RunningWorkload) String() string { func (*RunningWorkload) ProtoMessage() {} func (x *RunningWorkload) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[6] + mi := &file_agents_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -435,7 +534,7 @@ func (x *RunningWorkload) ProtoReflect() protoreflect.Message { // Deprecated: Use RunningWorkload.ProtoReflect.Descriptor instead. func (*RunningWorkload) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{6} + return file_agents_proto_rawDescGZIP(), []int{8} } func (x *RunningWorkload) GetId() string { @@ -472,7 +571,7 @@ type AuctionRequest struct { func (x *AuctionRequest) Reset() { *x = AuctionRequest{} - mi := &file_agents_proto_msgTypes[7] + mi := &file_agents_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -484,7 +583,7 @@ func (x *AuctionRequest) String() string { func (*AuctionRequest) ProtoMessage() {} func (x *AuctionRequest) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[7] + mi := &file_agents_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -497,7 +596,7 @@ func (x *AuctionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AuctionRequest.ProtoReflect.Descriptor instead. func (*AuctionRequest) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{7} + return file_agents_proto_rawDescGZIP(), []int{9} } func (x *AuctionRequest) GetArchitecture() string { @@ -544,7 +643,7 @@ type AuctionResponse struct { func (x *AuctionResponse) Reset() { *x = AuctionResponse{} - mi := &file_agents_proto_msgTypes[8] + mi := &file_agents_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -556,7 +655,7 @@ func (x *AuctionResponse) String() string { func (*AuctionResponse) ProtoMessage() {} func (x *AuctionResponse) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[8] + mi := &file_agents_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -569,7 +668,7 @@ func (x *AuctionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AuctionResponse.ProtoReflect.Descriptor instead. func (*AuctionResponse) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{8} + return file_agents_proto_rawDescGZIP(), []int{10} } func (x *AuctionResponse) GetBidderId() string { @@ -646,7 +745,7 @@ type StartWorkload struct { func (x *StartWorkload) Reset() { *x = StartWorkload{} - mi := &file_agents_proto_msgTypes[9] + mi := &file_agents_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -658,7 +757,7 @@ func (x *StartWorkload) String() string { func (*StartWorkload) ProtoMessage() {} func (x *StartWorkload) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[9] + mi := &file_agents_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -671,7 +770,7 @@ func (x *StartWorkload) ProtoReflect() protoreflect.Message { // Deprecated: Use StartWorkload.ProtoReflect.Descriptor instead. func (*StartWorkload) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{9} + return file_agents_proto_rawDescGZIP(), []int{11} } func (x *StartWorkload) GetArgv() []string { @@ -790,7 +889,7 @@ type EncEnvironment struct { func (x *EncEnvironment) Reset() { *x = EncEnvironment{} - mi := &file_agents_proto_msgTypes[10] + mi := &file_agents_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -802,7 +901,7 @@ func (x *EncEnvironment) String() string { func (*EncEnvironment) ProtoMessage() {} func (x *EncEnvironment) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[10] + mi := &file_agents_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -815,7 +914,7 @@ func (x *EncEnvironment) ProtoReflect() protoreflect.Message { // Deprecated: Use EncEnvironment.ProtoReflect.Descriptor instead. func (*EncEnvironment) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{10} + return file_agents_proto_rawDescGZIP(), []int{12} } func (x *EncEnvironment) GetEncryptedBy() string { @@ -844,7 +943,7 @@ type HostServicesConfig struct { func (x *HostServicesConfig) Reset() { *x = HostServicesConfig{} - mi := &file_agents_proto_msgTypes[11] + mi := &file_agents_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +955,7 @@ func (x *HostServicesConfig) String() string { func (*HostServicesConfig) ProtoMessage() {} func (x *HostServicesConfig) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[11] + mi := &file_agents_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +968,7 @@ func (x *HostServicesConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use HostServicesConfig.ProtoReflect.Descriptor instead. func (*HostServicesConfig) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{11} + return file_agents_proto_rawDescGZIP(), []int{13} } func (x *HostServicesConfig) GetNatsUrl() string { @@ -904,7 +1003,7 @@ type GetRunRequest struct { func (x *GetRunRequest) Reset() { *x = GetRunRequest{} - mi := &file_agents_proto_msgTypes[12] + mi := &file_agents_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -916,7 +1015,7 @@ func (x *GetRunRequest) String() string { func (*GetRunRequest) ProtoMessage() {} func (x *GetRunRequest) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[12] + mi := &file_agents_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -929,7 +1028,7 @@ func (x *GetRunRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRunRequest.ProtoReflect.Descriptor instead. func (*GetRunRequest) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{12} + return file_agents_proto_rawDescGZIP(), []int{14} } func (x *GetRunRequest) GetNamespace() string { @@ -957,7 +1056,7 @@ type NoEnvRunRequest struct { func (x *NoEnvRunRequest) Reset() { *x = NoEnvRunRequest{} - mi := &file_agents_proto_msgTypes[13] + mi := &file_agents_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -969,7 +1068,7 @@ func (x *NoEnvRunRequest) String() string { func (*NoEnvRunRequest) ProtoMessage() {} func (x *NoEnvRunRequest) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[13] + mi := &file_agents_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +1081,7 @@ func (x *NoEnvRunRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NoEnvRunRequest.ProtoReflect.Descriptor instead. func (*NoEnvRunRequest) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{13} + return file_agents_proto_rawDescGZIP(), []int{15} } func (x *NoEnvRunRequest) GetClearEnv() map[string]string { @@ -1013,7 +1112,7 @@ type WorkloadStarted struct { func (x *WorkloadStarted) Reset() { *x = WorkloadStarted{} - mi := &file_agents_proto_msgTypes[14] + mi := &file_agents_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1025,7 +1124,7 @@ func (x *WorkloadStarted) String() string { func (*WorkloadStarted) ProtoMessage() {} func (x *WorkloadStarted) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[14] + mi := &file_agents_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1038,7 +1137,7 @@ func (x *WorkloadStarted) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkloadStarted.ProtoReflect.Descriptor instead. func (*WorkloadStarted) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{14} + return file_agents_proto_rawDescGZIP(), []int{16} } func (x *WorkloadStarted) GetId() string { @@ -1082,7 +1181,7 @@ type StopWorkload struct { func (x *StopWorkload) Reset() { *x = StopWorkload{} - mi := &file_agents_proto_msgTypes[15] + mi := &file_agents_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1094,7 +1193,7 @@ func (x *StopWorkload) String() string { func (*StopWorkload) ProtoMessage() {} func (x *StopWorkload) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[15] + mi := &file_agents_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1107,7 +1206,7 @@ func (x *StopWorkload) ProtoReflect() protoreflect.Message { // Deprecated: Use StopWorkload.ProtoReflect.Descriptor instead. func (*StopWorkload) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{15} + return file_agents_proto_rawDescGZIP(), []int{17} } func (x *StopWorkload) GetNodeId() string { @@ -1144,7 +1243,7 @@ type WorkloadStopped struct { func (x *WorkloadStopped) Reset() { *x = WorkloadStopped{} - mi := &file_agents_proto_msgTypes[16] + mi := &file_agents_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1156,7 +1255,7 @@ func (x *WorkloadStopped) String() string { func (*WorkloadStopped) ProtoMessage() {} func (x *WorkloadStopped) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[16] + mi := &file_agents_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1169,7 +1268,7 @@ func (x *WorkloadStopped) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkloadStopped.ProtoReflect.Descriptor instead. func (*WorkloadStopped) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{16} + return file_agents_proto_rawDescGZIP(), []int{18} } func (x *WorkloadStopped) GetId() string { @@ -1202,7 +1301,7 @@ type QueryWorkloads struct { func (x *QueryWorkloads) Reset() { *x = QueryWorkloads{} - mi := &file_agents_proto_msgTypes[17] + mi := &file_agents_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1214,7 +1313,7 @@ func (x *QueryWorkloads) String() string { func (*QueryWorkloads) ProtoMessage() {} func (x *QueryWorkloads) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[17] + mi := &file_agents_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1227,7 +1326,7 @@ func (x *QueryWorkloads) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryWorkloads.ProtoReflect.Descriptor instead. func (*QueryWorkloads) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{17} + return file_agents_proto_rawDescGZIP(), []int{19} } type QueryWorkload struct { @@ -1238,7 +1337,7 @@ type QueryWorkload struct { func (x *QueryWorkload) Reset() { *x = QueryWorkload{} - mi := &file_agents_proto_msgTypes[18] + mi := &file_agents_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1250,7 +1349,7 @@ func (x *QueryWorkload) String() string { func (*QueryWorkload) ProtoMessage() {} func (x *QueryWorkload) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[18] + mi := &file_agents_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1263,7 +1362,7 @@ func (x *QueryWorkload) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryWorkload.ProtoReflect.Descriptor instead. func (*QueryWorkload) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{18} + return file_agents_proto_rawDescGZIP(), []int{20} } type WorkloadList struct { @@ -1276,7 +1375,7 @@ type WorkloadList struct { func (x *WorkloadList) Reset() { *x = WorkloadList{} - mi := &file_agents_proto_msgTypes[19] + mi := &file_agents_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1288,7 +1387,7 @@ func (x *WorkloadList) String() string { func (*WorkloadList) ProtoMessage() {} func (x *WorkloadList) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[19] + mi := &file_agents_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1301,7 +1400,7 @@ func (x *WorkloadList) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkloadList.ProtoReflect.Descriptor instead. func (*WorkloadList) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{19} + return file_agents_proto_rawDescGZIP(), []int{21} } func (x *WorkloadList) GetWorkloads() []*WorkloadSummary { @@ -1319,7 +1418,7 @@ type SpawnDirectStartProcess struct { func (x *SpawnDirectStartProcess) Reset() { *x = SpawnDirectStartProcess{} - mi := &file_agents_proto_msgTypes[20] + mi := &file_agents_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1331,7 +1430,7 @@ func (x *SpawnDirectStartProcess) String() string { func (*SpawnDirectStartProcess) ProtoMessage() {} func (x *SpawnDirectStartProcess) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[20] + mi := &file_agents_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1344,7 +1443,7 @@ func (x *SpawnDirectStartProcess) ProtoReflect() protoreflect.Message { // Deprecated: Use SpawnDirectStartProcess.ProtoReflect.Descriptor instead. func (*SpawnDirectStartProcess) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{20} + return file_agents_proto_rawDescGZIP(), []int{22} } type KillDirectStartProcess struct { @@ -1355,7 +1454,7 @@ type KillDirectStartProcess struct { func (x *KillDirectStartProcess) Reset() { *x = KillDirectStartProcess{} - mi := &file_agents_proto_msgTypes[21] + mi := &file_agents_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1367,7 +1466,7 @@ func (x *KillDirectStartProcess) String() string { func (*KillDirectStartProcess) ProtoMessage() {} func (x *KillDirectStartProcess) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[21] + mi := &file_agents_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1380,7 +1479,7 @@ func (x *KillDirectStartProcess) ProtoReflect() protoreflect.Message { // Deprecated: Use KillDirectStartProcess.ProtoReflect.Descriptor instead. func (*KillDirectStartProcess) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{21} + return file_agents_proto_rawDescGZIP(), []int{23} } type SpawnAgentBinary struct { @@ -1391,7 +1490,7 @@ type SpawnAgentBinary struct { func (x *SpawnAgentBinary) Reset() { *x = SpawnAgentBinary{} - mi := &file_agents_proto_msgTypes[22] + mi := &file_agents_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1403,7 +1502,7 @@ func (x *SpawnAgentBinary) String() string { func (*SpawnAgentBinary) ProtoMessage() {} func (x *SpawnAgentBinary) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[22] + mi := &file_agents_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1416,7 +1515,7 @@ func (x *SpawnAgentBinary) ProtoReflect() protoreflect.Message { // Deprecated: Use SpawnAgentBinary.ProtoReflect.Descriptor instead. func (*SpawnAgentBinary) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{22} + return file_agents_proto_rawDescGZIP(), []int{24} } type GetNodeInfo struct { @@ -1427,7 +1526,7 @@ type GetNodeInfo struct { func (x *GetNodeInfo) Reset() { *x = GetNodeInfo{} - mi := &file_agents_proto_msgTypes[23] + mi := &file_agents_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1439,7 +1538,7 @@ func (x *GetNodeInfo) String() string { func (*GetNodeInfo) ProtoMessage() {} func (x *GetNodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[23] + mi := &file_agents_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1452,7 +1551,7 @@ func (x *GetNodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNodeInfo.ProtoReflect.Descriptor instead. func (*GetNodeInfo) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{23} + return file_agents_proto_rawDescGZIP(), []int{25} } type NodeInfo struct { @@ -1471,7 +1570,7 @@ type NodeInfo struct { func (x *NodeInfo) Reset() { *x = NodeInfo{} - mi := &file_agents_proto_msgTypes[24] + mi := &file_agents_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1483,7 +1582,7 @@ func (x *NodeInfo) String() string { func (*NodeInfo) ProtoMessage() {} func (x *NodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[24] + mi := &file_agents_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1496,7 +1595,7 @@ func (x *NodeInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfo.ProtoReflect.Descriptor instead. func (*NodeInfo) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{24} + return file_agents_proto_rawDescGZIP(), []int{26} } func (x *NodeInfo) GetNexus() string { @@ -1563,7 +1662,7 @@ type WorkloadSummary struct { func (x *WorkloadSummary) Reset() { *x = WorkloadSummary{} - mi := &file_agents_proto_msgTypes[25] + mi := &file_agents_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1575,7 +1674,7 @@ func (x *WorkloadSummary) String() string { func (*WorkloadSummary) ProtoMessage() {} func (x *WorkloadSummary) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[25] + mi := &file_agents_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1588,7 +1687,7 @@ func (x *WorkloadSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkloadSummary.ProtoReflect.Descriptor instead. func (*WorkloadSummary) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{25} + return file_agents_proto_rawDescGZIP(), []int{27} } func (x *WorkloadSummary) GetId() string { @@ -1641,7 +1740,7 @@ type SetLameDuck struct { func (x *SetLameDuck) Reset() { *x = SetLameDuck{} - mi := &file_agents_proto_msgTypes[26] + mi := &file_agents_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1653,7 +1752,7 @@ func (x *SetLameDuck) String() string { func (*SetLameDuck) ProtoMessage() {} func (x *SetLameDuck) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[26] + mi := &file_agents_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1666,7 +1765,7 @@ func (x *SetLameDuck) ProtoReflect() protoreflect.Message { // Deprecated: Use SetLameDuck.ProtoReflect.Descriptor instead. func (*SetLameDuck) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{26} + return file_agents_proto_rawDescGZIP(), []int{28} } type LameDuckResponse struct { @@ -1679,7 +1778,7 @@ type LameDuckResponse struct { func (x *LameDuckResponse) Reset() { *x = LameDuckResponse{} - mi := &file_agents_proto_msgTypes[27] + mi := &file_agents_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1691,7 +1790,7 @@ func (x *LameDuckResponse) String() string { func (*LameDuckResponse) ProtoMessage() {} func (x *LameDuckResponse) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[27] + mi := &file_agents_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1704,7 +1803,7 @@ func (x *LameDuckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LameDuckResponse.ProtoReflect.Descriptor instead. func (*LameDuckResponse) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{27} + return file_agents_proto_rawDescGZIP(), []int{29} } func (x *LameDuckResponse) GetSuccess() bool { @@ -1733,7 +1832,7 @@ type AgentRegistered struct { func (x *AgentRegistered) Reset() { *x = AgentRegistered{} - mi := &file_agents_proto_msgTypes[28] + mi := &file_agents_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1745,7 +1844,7 @@ func (x *AgentRegistered) String() string { func (*AgentRegistered) ProtoMessage() {} func (x *AgentRegistered) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[28] + mi := &file_agents_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1758,7 +1857,7 @@ func (x *AgentRegistered) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentRegistered.ProtoReflect.Descriptor instead. func (*AgentRegistered) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{28} + return file_agents_proto_rawDescGZIP(), []int{30} } func (x *AgentRegistered) GetWorkloadType() string { @@ -1811,7 +1910,7 @@ type CheckRegistered struct { func (x *CheckRegistered) Reset() { *x = CheckRegistered{} - mi := &file_agents_proto_msgTypes[29] + mi := &file_agents_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1823,7 +1922,7 @@ func (x *CheckRegistered) String() string { func (*CheckRegistered) ProtoMessage() {} func (x *CheckRegistered) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[29] + mi := &file_agents_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1836,7 +1935,7 @@ func (x *CheckRegistered) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRegistered.ProtoReflect.Descriptor instead. func (*CheckRegistered) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{29} + return file_agents_proto_rawDescGZIP(), []int{31} } // Request made by the actor system and/or control API asking the agent to stop. Note @@ -1849,7 +1948,7 @@ type Halt struct { func (x *Halt) Reset() { *x = Halt{} - mi := &file_agents_proto_msgTypes[30] + mi := &file_agents_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1861,7 +1960,7 @@ func (x *Halt) String() string { func (*Halt) ProtoMessage() {} func (x *Halt) ProtoReflect() protoreflect.Message { - mi := &file_agents_proto_msgTypes[30] + mi := &file_agents_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1874,7 +1973,7 @@ func (x *Halt) ProtoReflect() protoreflect.Message { // Deprecated: Use Halt.ProtoReflect.Descriptor instead. func (*Halt) Descriptor() ([]byte, []int) { - return file_agents_proto_rawDescGZIP(), []int{30} + return file_agents_proto_rawDescGZIP(), []int{32} } var File_agents_proto protoreflect.FileDescriptor @@ -1883,269 +1982,279 @@ var file_agents_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0a, 0x0a, 0x08, 0x50, 0x69, 0x6e, 0x67, 0x4e, - 0x6f, 0x64, 0x65, 0x22, 0xbe, 0x03, 0x0a, 0x10, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x6b, - 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 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, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x5f, 0x0a, 0x08, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x2e, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x21, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x0a, 0x0a, 0x08, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, + 0x64, 0x65, 0x22, 0xbe, 0x03, 0x0a, 0x10, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6e, 0x65, 0x78, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x6b, 0x65, + 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x09, 0x50, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x61, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x58, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x37, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x10, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x09, 0x50, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x61, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x11, 0x50, 0x69, 0x6e, 0x67, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x78, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x58, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x37, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x10, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, + 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x14, 0x50, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x53, 0x0a, 0x0f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x0e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa2, 0x03, 0x0a, 0x0f, 0x41, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x65, + 0x78, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x65, 0x78, 0x75, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x41, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x61, + 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3b, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x14, 0x50, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x22, 0x53, 0x0a, 0x0f, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x57, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x0e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x29, 0x0a, 0x10, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa2, 0x03, 0x0a, 0x0f, 0x41, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x62, 0x69, 0x64, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, - 0x65, 0x78, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x65, 0x78, 0x75, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x41, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, - 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3b, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, + 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa1, + 0x04, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x61, 0x72, 0x67, 0x76, 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, 0x38, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x6e, 0x63, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, + 0x73, 0x68, 0x12, 0x4a, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x68, 0x6f, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x6a, 0x73, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6a, 0x73, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, + 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x0a, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x75, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x77, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x22, 0x65, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, + 0x64, 0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, 0x36, + 0x34, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x76, 0x22, 0x79, 0x0a, 0x12, 0x48, 0x6f, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x19, 0x0a, 0x08, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x61, + 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x65, 0x64, + 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6a, 0x77, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x73, 0x65, + 0x72, 0x4a, 0x77, 0x74, 0x22, 0x4e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x0f, 0x4e, 0x6f, 0x45, 0x6e, 0x76, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x6c, 0x65, 0x61, + 0x72, 0x5f, 0x65, 0x6e, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x6f, 0x45, 0x6e, 0x76, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, 0x76, 0x12, 0x36, 0x0a, 0x0b, + 0x72, 0x75, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, 0x76, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x67, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x22, 0x6b, 0x0a, 0x0c, 0x53, 0x74, + 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x77, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x0f, + 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x22, + 0x45, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x35, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x70, 0x61, 0x77, 0x6e, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x22, 0x18, 0x0a, 0x16, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x53, + 0x70, 0x61, 0x77, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x22, + 0x0d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa3, + 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x65, 0x78, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x65, 0x78, 0x75, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, 0x6b, + 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xa1, 0x04, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x61, 0x72, 0x67, 0x76, 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, 0x38, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x45, 0x6e, 0x63, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x73, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x12, 0x4a, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x68, 0x6f, - 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x1a, 0x0a, 0x08, 0x6a, 0x73, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6a, 0x73, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, - 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x75, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x77, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0x65, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x61, 0x73, 0x65, - 0x36, 0x34, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x76, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x45, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x76, 0x22, 0x79, 0x0a, 0x12, 0x48, 0x6f, - 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x6e, - 0x61, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x65, - 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6a, - 0x77, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x74, 0x73, 0x55, 0x73, - 0x65, 0x72, 0x4a, 0x77, 0x74, 0x22, 0x4e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x0f, 0x4e, 0x6f, 0x45, 0x6e, 0x76, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x6c, 0x65, - 0x61, 0x72, 0x5f, 0x65, 0x6e, 0x76, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x6f, 0x45, 0x6e, 0x76, 0x52, 0x75, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, 0x76, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, 0x76, 0x12, 0x36, 0x0a, - 0x0b, 0x72, 0x75, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x45, 0x6e, - 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x67, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x22, 0x6b, 0x0a, 0x0c, 0x53, - 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x6a, 0x77, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x77, 0x74, 0x22, 0x53, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x22, 0x10, 0x0a, - 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, - 0x0f, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x22, 0x45, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x35, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, 0x77, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x70, 0x61, 0x77, 0x6e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x22, 0x12, 0x0a, 0x10, - 0x53, 0x70, 0x61, 0x77, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, - 0x22, 0x0d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0xa3, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, - 0x6e, 0x65, 0x78, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x65, 0x78, - 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x78, 0x6b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x58, - 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x37, 0x0a, 0x09, - 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x18, 0x0a, - 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x6d, 0x65, - 0x44, 0x75, 0x63, 0x6b, 0x22, 0x2c, 0x0a, 0x10, 0x4c, 0x61, 0x6d, 0x65, 0x44, 0x75, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x95, 0x02, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x62, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6e, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x62, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4e, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, - 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x69, 0x6e, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x5f, 0x73, - 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x62, 0x69, 0x6e, 0x4e, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x4e, 0x61, 0x74, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x12, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x4e, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x06, 0x0a, - 0x04, 0x48, 0x61, 0x6c, 0x74, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x79, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x2d, 0x69, 0x6f, 0x2f, 0x6e, - 0x65, 0x78, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x70, - 0x62, 0x3b, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcd, 0x01, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 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, 0x18, 0x0a, 0x07, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x4c, 0x61, 0x6d, 0x65, 0x44, + 0x75, 0x63, 0x6b, 0x22, 0x2c, 0x0a, 0x10, 0x4c, 0x61, 0x6d, 0x65, 0x44, 0x75, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x95, 0x02, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x62, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6e, 0x6b, + 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, + 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4e, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x12, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x69, 0x6e, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, + 0x69, 0x6e, 0x4e, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, + 0x61, 0x74, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4e, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x4e, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x22, 0x06, 0x0a, 0x04, + 0x48, 0x61, 0x6c, 0x74, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x73, 0x79, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x2d, 0x69, 0x6f, 0x2f, 0x6e, 0x65, + 0x78, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x70, 0x62, + 0x3b, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2160,72 +2269,77 @@ func file_agents_proto_rawDescGZIP() []byte { return file_agents_proto_rawDescData } -var file_agents_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_agents_proto_msgTypes = make([]protoimpl.MessageInfo, 40) var file_agents_proto_goTypes = []any{ - (*PingNode)(nil), // 0: agents.PingNode - (*PingNodeResponse)(nil), // 1: agents.PingNodeResponse - (*PingAgent)(nil), // 2: agents.PingAgent - (*PingWorkload)(nil), // 3: agents.PingWorkload - (*PingAgentResponse)(nil), // 4: agents.PingAgentResponse - (*PingWorkloadResponse)(nil), // 5: agents.PingWorkloadResponse - (*RunningWorkload)(nil), // 6: agents.RunningWorkload - (*AuctionRequest)(nil), // 7: agents.AuctionRequest - (*AuctionResponse)(nil), // 8: agents.AuctionResponse - (*StartWorkload)(nil), // 9: agents.StartWorkload - (*EncEnvironment)(nil), // 10: agents.EncEnvironment - (*HostServicesConfig)(nil), // 11: agents.HostServicesConfig - (*GetRunRequest)(nil), // 12: agents.GetRunRequest - (*NoEnvRunRequest)(nil), // 13: agents.NoEnvRunRequest - (*WorkloadStarted)(nil), // 14: agents.WorkloadStarted - (*StopWorkload)(nil), // 15: agents.StopWorkload - (*WorkloadStopped)(nil), // 16: agents.WorkloadStopped - (*QueryWorkloads)(nil), // 17: agents.QueryWorkloads - (*QueryWorkload)(nil), // 18: agents.QueryWorkload - (*WorkloadList)(nil), // 19: agents.WorkloadList - (*SpawnDirectStartProcess)(nil), // 20: agents.SpawnDirectStartProcess - (*KillDirectStartProcess)(nil), // 21: agents.KillDirectStartProcess - (*SpawnAgentBinary)(nil), // 22: agents.SpawnAgentBinary - (*GetNodeInfo)(nil), // 23: agents.GetNodeInfo - (*NodeInfo)(nil), // 24: agents.NodeInfo - (*WorkloadSummary)(nil), // 25: agents.WorkloadSummary - (*SetLameDuck)(nil), // 26: agents.SetLameDuck - (*LameDuckResponse)(nil), // 27: agents.LameDuckResponse - (*AgentRegistered)(nil), // 28: agents.AgentRegistered - (*CheckRegistered)(nil), // 29: agents.CheckRegistered - (*Halt)(nil), // 30: agents.Halt - nil, // 31: agents.PingNodeResponse.TagsEntry - nil, // 32: agents.PingNodeResponse.RunningAgentsEntry - nil, // 33: agents.PingAgentResponse.TagsEntry - nil, // 34: agents.AuctionResponse.TagsEntry - nil, // 35: agents.AuctionResponse.StatusEntry - nil, // 36: agents.NoEnvRunRequest.ClearEnvEntry - nil, // 37: agents.NodeInfo.TagsEntry - (*timestamppb.Timestamp)(nil), // 38: google.protobuf.Timestamp + (*Envelope)(nil), // 0: agents.Envelope + (*Error)(nil), // 1: agents.Error + (*PingNode)(nil), // 2: agents.PingNode + (*PingNodeResponse)(nil), // 3: agents.PingNodeResponse + (*PingAgent)(nil), // 4: agents.PingAgent + (*PingWorkload)(nil), // 5: agents.PingWorkload + (*PingAgentResponse)(nil), // 6: agents.PingAgentResponse + (*PingWorkloadResponse)(nil), // 7: agents.PingWorkloadResponse + (*RunningWorkload)(nil), // 8: agents.RunningWorkload + (*AuctionRequest)(nil), // 9: agents.AuctionRequest + (*AuctionResponse)(nil), // 10: agents.AuctionResponse + (*StartWorkload)(nil), // 11: agents.StartWorkload + (*EncEnvironment)(nil), // 12: agents.EncEnvironment + (*HostServicesConfig)(nil), // 13: agents.HostServicesConfig + (*GetRunRequest)(nil), // 14: agents.GetRunRequest + (*NoEnvRunRequest)(nil), // 15: agents.NoEnvRunRequest + (*WorkloadStarted)(nil), // 16: agents.WorkloadStarted + (*StopWorkload)(nil), // 17: agents.StopWorkload + (*WorkloadStopped)(nil), // 18: agents.WorkloadStopped + (*QueryWorkloads)(nil), // 19: agents.QueryWorkloads + (*QueryWorkload)(nil), // 20: agents.QueryWorkload + (*WorkloadList)(nil), // 21: agents.WorkloadList + (*SpawnDirectStartProcess)(nil), // 22: agents.SpawnDirectStartProcess + (*KillDirectStartProcess)(nil), // 23: agents.KillDirectStartProcess + (*SpawnAgentBinary)(nil), // 24: agents.SpawnAgentBinary + (*GetNodeInfo)(nil), // 25: agents.GetNodeInfo + (*NodeInfo)(nil), // 26: agents.NodeInfo + (*WorkloadSummary)(nil), // 27: agents.WorkloadSummary + (*SetLameDuck)(nil), // 28: agents.SetLameDuck + (*LameDuckResponse)(nil), // 29: agents.LameDuckResponse + (*AgentRegistered)(nil), // 30: agents.AgentRegistered + (*CheckRegistered)(nil), // 31: agents.CheckRegistered + (*Halt)(nil), // 32: agents.Halt + nil, // 33: agents.PingNodeResponse.TagsEntry + nil, // 34: agents.PingNodeResponse.RunningAgentsEntry + nil, // 35: agents.PingAgentResponse.TagsEntry + nil, // 36: agents.AuctionResponse.TagsEntry + nil, // 37: agents.AuctionResponse.StatusEntry + nil, // 38: agents.NoEnvRunRequest.ClearEnvEntry + nil, // 39: agents.NodeInfo.TagsEntry + (*anypb.Any)(nil), // 40: google.protobuf.Any + (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp } var file_agents_proto_depIdxs = []int32{ - 38, // 0: agents.PingNodeResponse.started_at:type_name -> google.protobuf.Timestamp - 31, // 1: agents.PingNodeResponse.tags:type_name -> agents.PingNodeResponse.TagsEntry - 32, // 2: agents.PingNodeResponse.running_agents:type_name -> agents.PingNodeResponse.RunningAgentsEntry - 33, // 3: agents.PingAgentResponse.tags:type_name -> agents.PingAgentResponse.TagsEntry - 38, // 4: agents.PingAgentResponse.started_at:type_name -> google.protobuf.Timestamp - 6, // 5: agents.PingAgentResponse.running_workloads:type_name -> agents.RunningWorkload - 25, // 6: agents.PingWorkloadResponse.workload:type_name -> agents.WorkloadSummary - 38, // 7: agents.AuctionResponse.started_at:type_name -> google.protobuf.Timestamp - 34, // 8: agents.AuctionResponse.tags:type_name -> agents.AuctionResponse.TagsEntry - 35, // 9: agents.AuctionResponse.status:type_name -> agents.AuctionResponse.StatusEntry - 10, // 10: agents.StartWorkload.environment:type_name -> agents.EncEnvironment - 11, // 11: agents.StartWorkload.host_service_config:type_name -> agents.HostServicesConfig - 36, // 12: agents.NoEnvRunRequest.clear_env:type_name -> agents.NoEnvRunRequest.ClearEnvEntry - 9, // 13: agents.NoEnvRunRequest.run_request:type_name -> agents.StartWorkload - 25, // 14: agents.WorkloadList.workloads:type_name -> agents.WorkloadSummary - 37, // 15: agents.NodeInfo.tags:type_name -> agents.NodeInfo.TagsEntry - 25, // 16: agents.NodeInfo.workloads:type_name -> agents.WorkloadSummary - 38, // 17: agents.WorkloadSummary.started_at:type_name -> google.protobuf.Timestamp - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 40, // 0: agents.Envelope.payload:type_name -> google.protobuf.Any + 1, // 1: agents.Envelope.error:type_name -> agents.Error + 41, // 2: agents.PingNodeResponse.started_at:type_name -> google.protobuf.Timestamp + 33, // 3: agents.PingNodeResponse.tags:type_name -> agents.PingNodeResponse.TagsEntry + 34, // 4: agents.PingNodeResponse.running_agents:type_name -> agents.PingNodeResponse.RunningAgentsEntry + 35, // 5: agents.PingAgentResponse.tags:type_name -> agents.PingAgentResponse.TagsEntry + 41, // 6: agents.PingAgentResponse.started_at:type_name -> google.protobuf.Timestamp + 8, // 7: agents.PingAgentResponse.running_workloads:type_name -> agents.RunningWorkload + 27, // 8: agents.PingWorkloadResponse.workload:type_name -> agents.WorkloadSummary + 41, // 9: agents.AuctionResponse.started_at:type_name -> google.protobuf.Timestamp + 36, // 10: agents.AuctionResponse.tags:type_name -> agents.AuctionResponse.TagsEntry + 37, // 11: agents.AuctionResponse.status:type_name -> agents.AuctionResponse.StatusEntry + 12, // 12: agents.StartWorkload.environment:type_name -> agents.EncEnvironment + 13, // 13: agents.StartWorkload.host_service_config:type_name -> agents.HostServicesConfig + 38, // 14: agents.NoEnvRunRequest.clear_env:type_name -> agents.NoEnvRunRequest.ClearEnvEntry + 11, // 15: agents.NoEnvRunRequest.run_request:type_name -> agents.StartWorkload + 27, // 16: agents.WorkloadList.workloads:type_name -> agents.WorkloadSummary + 39, // 17: agents.NodeInfo.tags:type_name -> agents.NodeInfo.TagsEntry + 27, // 18: agents.NodeInfo.workloads:type_name -> agents.WorkloadSummary + 41, // 19: agents.WorkloadSummary.started_at:type_name -> google.protobuf.Timestamp + 20, // [20:20] is the sub-list for method output_type + 20, // [20:20] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_agents_proto_init() } @@ -2239,7 +2353,7 @@ func file_agents_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agents_proto_rawDesc, NumEnums: 0, - NumMessages: 38, + NumMessages: 40, NumExtensions: 0, NumServices: 0, }, diff --git a/node/internal/actors/pb/agents.proto b/node/internal/actors/pb/agents.proto index ccb6f3bf..5a20d5c0 100644 --- a/node/internal/actors/pb/agents.proto +++ b/node/internal/actors/pb/agents.proto @@ -4,11 +4,21 @@ syntax = "proto3"; import "google/protobuf/timestamp.proto"; +import "google/protobuf/any.proto"; package agents; option go_package = "github.com/synadia-io/nex/node/actors/pb;actorproto"; +message Envelope { + google.protobuf.Any payload = 1; + Error error = 2; +} + +message Error { + string message = 1; +} + message PingNode {} message PingNodeResponse { diff --git a/node/node.go b/node/node.go index b33301d0..28e7acb6 100644 --- a/node/node.go +++ b/node/node.go @@ -203,6 +203,9 @@ func (nn *nexNode) Start() error { func (nn *nexNode) initializeSupervisionTree() error { var err error + restartDirective := goakt.NewRestartDirective() + restartDirective.WithLimit(3, 30*time.Second) + nn.actorSystem, err = goakt.NewActorSystem("nexnode", goakt.WithLogger(logger.NewSlog(nn.options.Logger.Handler().WithGroup("system"))), goakt.WithPassivationDisabled(), @@ -210,6 +213,7 @@ func (nn *nexNode) initializeSupervisionTree() error { // TODO: figure out why they're gone or how we can plug in our own impls //goakt.WithTelemetry(telemetry), //goakt.WithTracing(), + goakt.WithSupervisorDirective(restartDirective), goakt.WithActorInitMaxRetries(3)) if err != nil { return err