diff --git a/agent/client/client.go b/agent/client/client.go index adba88a140..53c0a9ae46 100644 --- a/agent/client/client.go +++ b/agent/client/client.go @@ -50,12 +50,13 @@ type Client struct { logger *zap.Logger tracer trace.Tracer - stopListener func(context.Context, *proto.StopRequest) error - triggerListener func(context.Context, *proto.TriggerRequest) error - pollListener func(context.Context, *proto.PollingRequest) error - shutdownListener func(context.Context, *proto.ShutdownRequest) error - dataStoreConnectionListener func(context.Context, *proto.DataStoreConnectionTestRequest) error - otlpConnectionTestListener func(context.Context, *proto.OTLPConnectionTestRequest) error + stopListener func(context.Context, *proto.StopRequest) error + triggerListener func(context.Context, *proto.TriggerRequest) error + pollListener func(context.Context, *proto.PollingRequest) error + graphqlIntrospectionListener func(context.Context, *proto.GraphqlIntrospectRequest) error + shutdownListener func(context.Context, *proto.ShutdownRequest) error + dataStoreConnectionListener func(context.Context, *proto.DataStoreConnectionTestRequest) error + otlpConnectionTestListener func(context.Context, *proto.OTLPConnectionTestRequest) error } func (c *Client) Start(ctx context.Context) error { @@ -107,6 +108,12 @@ func (c *Client) Start(ctx context.Context) error { return err } + err = c.startGraphqlIntrospectionListener(ctx) + if err != nil { + c.logger.Error("Failed to start graphql introspection listener", zap.Error(err)) + return err + } + err = c.startOTLPConnectionTestListener(ctx) if err != nil { c.logger.Error("Failed to start OTLP connection test listener", zap.Error(err)) @@ -158,6 +165,10 @@ func (c *Client) OnPollingRequest(listener func(context.Context, *proto.PollingR c.pollListener = listener } +func (c *Client) OnGraphqlIntrospectionRequest(listener func(context.Context, *proto.GraphqlIntrospectRequest) error) { + c.graphqlIntrospectionListener = listener +} + func (c *Client) OnOTLPConnectionTest(listener func(context.Context, *proto.OTLPConnectionTestRequest) error) { c.otlpConnectionTestListener = listener } diff --git a/agent/client/mocks/grpc_server.go b/agent/client/mocks/grpc_server.go index d9d29eaf9e..43b85b9d53 100644 --- a/agent/client/mocks/grpc_server.go +++ b/agent/client/mocks/grpc_server.go @@ -15,17 +15,19 @@ import ( type GrpcServerMock struct { proto.UnimplementedOrchestratorServer - port int - triggerChannel chan Message[*proto.TriggerRequest] - pollingChannel chan Message[*proto.PollingRequest] - otlpConnectionTestChannel chan Message[*proto.OTLPConnectionTestRequest] - terminationChannel chan Message[*proto.ShutdownRequest] - dataStoreTestChannel chan Message[*proto.DataStoreConnectionTestRequest] - - lastTriggerResponse Message[*proto.TriggerResponse] - lastPollingResponse Message[*proto.PollingResponse] - lastOtlpConnectionResponse Message[*proto.OTLPConnectionTestResponse] - lastDataStoreConnectionResponse Message[*proto.DataStoreConnectionTestResponse] + port int + triggerChannel chan Message[*proto.TriggerRequest] + pollingChannel chan Message[*proto.PollingRequest] + otlpConnectionTestChannel chan Message[*proto.OTLPConnectionTestRequest] + terminationChannel chan Message[*proto.ShutdownRequest] + dataStoreTestChannel chan Message[*proto.DataStoreConnectionTestRequest] + graphqlIntrospectionChannel chan Message[*proto.GraphqlIntrospectRequest] + + lastTriggerResponse Message[*proto.TriggerResponse] + lastPollingResponse Message[*proto.PollingResponse] + lastOtlpConnectionResponse Message[*proto.OTLPConnectionTestResponse] + lastDataStoreConnectionResponse Message[*proto.DataStoreConnectionTestResponse] + lastGraphqlIntrospectionResponse Message[*proto.GraphqlIntrospectResponse] server *grpc.Server } @@ -37,11 +39,12 @@ type Message[T any] struct { func NewGrpcServer() *GrpcServerMock { server := &GrpcServerMock{ - triggerChannel: make(chan Message[*proto.TriggerRequest]), - pollingChannel: make(chan Message[*proto.PollingRequest]), - terminationChannel: make(chan Message[*proto.ShutdownRequest]), - dataStoreTestChannel: make(chan Message[*proto.DataStoreConnectionTestRequest]), - otlpConnectionTestChannel: make(chan Message[*proto.OTLPConnectionTestRequest]), + triggerChannel: make(chan Message[*proto.TriggerRequest]), + pollingChannel: make(chan Message[*proto.PollingRequest]), + terminationChannel: make(chan Message[*proto.ShutdownRequest]), + dataStoreTestChannel: make(chan Message[*proto.DataStoreConnectionTestRequest]), + otlpConnectionTestChannel: make(chan Message[*proto.OTLPConnectionTestRequest]), + graphqlIntrospectionChannel: make(chan Message[*proto.GraphqlIntrospectRequest]), } var wg sync.WaitGroup wg.Add(1) @@ -159,6 +162,21 @@ func (s *GrpcServerMock) RegisterDataStoreConnectionTestAgent(id *proto.AgentIde } } +func (s *GrpcServerMock) RegisterGraphqlIntrospectListener(id *proto.AgentIdentification, stream proto.Orchestrator_RegisterGraphqlIntrospectListenerServer) error { + if id.Token != "token" { + return fmt.Errorf("could not validate token") + } + + for { + graphqlRequest := <-s.graphqlIntrospectionChannel + + err := stream.Send(graphqlRequest.Data) + if err != nil { + log.Println("could not send polling request to agent: %w", err) + } + } +} + func (s *GrpcServerMock) RegisterOTLPConnectionTestListener(id *proto.AgentIdentification, stream proto.Orchestrator_RegisterOTLPConnectionTestListenerServer) error { if id.Token != "token" { return fmt.Errorf("could not validate token") @@ -201,6 +219,15 @@ func (s *GrpcServerMock) SendPolledSpans(ctx context.Context, result *proto.Poll return &proto.Empty{}, nil } +func (s *GrpcServerMock) SendGraphqlIntrospectResult(ctx context.Context, result *proto.GraphqlIntrospectResponse) (*proto.Empty, error) { + if result.AgentIdentification == nil || result.AgentIdentification.Token != "token" { + return nil, fmt.Errorf("could not validate token") + } + + s.lastGraphqlIntrospectionResponse = Message[*proto.GraphqlIntrospectResponse]{Data: result, Context: ctx} + return &proto.Empty{}, nil +} + func (s *GrpcServerMock) RegisterShutdownListener(_ *proto.AgentIdentification, stream proto.Orchestrator_RegisterShutdownListenerServer) error { for { shutdownRequest := <-s.terminationChannel @@ -226,6 +253,10 @@ func (s *GrpcServerMock) SendDataStoreConnectionTestRequest(ctx context.Context, s.dataStoreTestChannel <- Message[*proto.DataStoreConnectionTestRequest]{Context: ctx, Data: request} } +func (s *GrpcServerMock) SendGraphqlIntrospectionRequest(ctx context.Context, request *proto.GraphqlIntrospectRequest) { + s.graphqlIntrospectionChannel <- Message[*proto.GraphqlIntrospectRequest]{Context: ctx, Data: request} +} + func (s *GrpcServerMock) SendOTLPConnectionTestRequest(ctx context.Context, request *proto.OTLPConnectionTestRequest) { s.otlpConnectionTestChannel <- Message[*proto.OTLPConnectionTestRequest]{Context: ctx, Data: request} } @@ -246,6 +277,10 @@ func (s *GrpcServerMock) GetLastDataStoreConnectionResponse() Message[*proto.Dat return s.lastDataStoreConnectionResponse } +func (s *GrpcServerMock) GetLastGraphqlIntrospectionResponse() Message[*proto.GraphqlIntrospectResponse] { + return s.lastGraphqlIntrospectionResponse +} + func (s *GrpcServerMock) TerminateConnection(ctx context.Context, reason string) { s.terminationChannel <- Message[*proto.ShutdownRequest]{ Context: ctx, diff --git a/agent/client/workflow_listen_for_graphql_introspection_requests.go b/agent/client/workflow_listen_for_graphql_introspection_requests.go new file mode 100644 index 0000000000..2547b4bb5b --- /dev/null +++ b/agent/client/workflow_listen_for_graphql_introspection_requests.go @@ -0,0 +1,63 @@ +package client + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/kubeshop/tracetest/agent/proto" + "github.com/kubeshop/tracetest/agent/telemetry" + "go.uber.org/zap" +) + +func (c *Client) startGraphqlIntrospectionListener(ctx context.Context) error { + logger := c.logger.Named("graphqlIntrospectionListener") + logger.Debug("Starting") + + client := proto.NewOrchestratorClient(c.conn) + + stream, err := client.RegisterGraphqlIntrospectListener(ctx, c.sessionConfig.AgentIdentification) + if err != nil { + logger.Error("could not open agent stream", zap.Error(err)) + return fmt.Errorf("could not open agent stream: %w", err) + } + + go func() { + for { + req := proto.GraphqlIntrospectRequest{} + err := stream.RecvMsg(&req) + if err != nil { + logger.Error("could not get message from graphql introspection stream", zap.Error(err)) + } + if isEndOfFileError(err) || isCancelledError(err) { + logger.Debug("graphql introspection stream closed") + return + } + + reconnected, err := c.handleDisconnectionError(err, &req) + if reconnected { + logger.Warn("reconnected to graphql introspection stream") + return + } + + if err != nil { + logger.Error("could not get message from graphql introspection stream", zap.Error(err)) + log.Println("could not get message from graphql introspection stream: %w", err) + time.Sleep(1 * time.Second) + continue + } + + // we want a new context per request, not to reuse the one from the stream + ctx := telemetry.InjectMetadataIntoContext(context.Background(), req.Metadata) + go func() { + err = c.graphqlIntrospectionListener(ctx, &req) + if err != nil { + logger.Error("could not handle graphql introspection request", zap.Error(err)) + fmt.Println(err.Error()) + } + }() + } + }() + return nil +} diff --git a/agent/client/workflow_send_graphql_introspection_result.go b/agent/client/workflow_send_graphql_introspection_result.go new file mode 100644 index 0000000000..6e2d6380c6 --- /dev/null +++ b/agent/client/workflow_send_graphql_introspection_result.go @@ -0,0 +1,23 @@ +package client + +import ( + "context" + "fmt" + + "github.com/kubeshop/tracetest/agent/proto" + "github.com/kubeshop/tracetest/agent/telemetry" +) + +func (c *Client) SendGraphqlIntrospectionResult(ctx context.Context, response *proto.GraphqlIntrospectResponse) error { + client := proto.NewOrchestratorClient(c.conn) + + response.AgentIdentification = c.sessionConfig.AgentIdentification + response.Metadata = telemetry.ExtractMetadataFromContext(ctx) + + _, err := client.SendGraphqlIntrospectResult(ctx, response) + if err != nil { + return fmt.Errorf("could not send graphql introspection result request: %w", err) + } + + return nil +} diff --git a/agent/proto/orchestrator.pb.go b/agent/proto/orchestrator.pb.go index 5d44bfd385..42fb44cc5e 100644 --- a/agent/proto/orchestrator.pb.go +++ b/agent/proto/orchestrator.pb.go @@ -508,6 +508,7 @@ type Trigger struct { TraceID *TraceIDRequest `protobuf:"bytes,4,opt,name=traceID,proto3" json:"traceID,omitempty"` Kafka *KafkaRequest `protobuf:"bytes,5,opt,name=kafka,proto3" json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineRequest `protobuf:"bytes,6,opt,name=playwrightEngine,proto3" json:"playwrightEngine,omitempty"` + Graphql *GraphqlRequest `protobuf:"bytes,7,opt,name=graphql,proto3" json:"graphql,omitempty"` } func (x *Trigger) Reset() { @@ -584,6 +585,13 @@ func (x *Trigger) GetPlaywrightEngine() *PlaywrightEngineRequest { return nil } +func (x *Trigger) GetGraphql() *GraphqlRequest { + if x != nil { + return x.Graphql + } + return nil +} + type HttpRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -671,6 +679,93 @@ func (x *HttpRequest) GetSSLVerification() bool { return false } +type GraphqlRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` + Headers []*HttpHeader `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` + Authentication *HttpAuthentication `protobuf:"bytes,4,opt,name=authentication,proto3" json:"authentication,omitempty"` + SSLVerification bool `protobuf:"varint,5,opt,name=SSLVerification,proto3" json:"SSLVerification,omitempty"` + Schema string `protobuf:"bytes,6,opt,name=schema,proto3" json:"schema,omitempty"` +} + +func (x *GraphqlRequest) Reset() { + *x = GraphqlRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_orchestrator_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphqlRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphqlRequest) ProtoMessage() {} + +func (x *GraphqlRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_orchestrator_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphqlRequest.ProtoReflect.Descriptor instead. +func (*GraphqlRequest) Descriptor() ([]byte, []int) { + return file_proto_orchestrator_proto_rawDescGZIP(), []int{10} +} + +func (x *GraphqlRequest) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *GraphqlRequest) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +func (x *GraphqlRequest) GetHeaders() []*HttpHeader { + if x != nil { + return x.Headers + } + return nil +} + +func (x *GraphqlRequest) GetAuthentication() *HttpAuthentication { + if x != nil { + return x.Authentication + } + return nil +} + +func (x *GraphqlRequest) GetSSLVerification() bool { + if x != nil { + return x.SSLVerification + } + return false +} + +func (x *GraphqlRequest) GetSchema() string { + if x != nil { + return x.Schema + } + return "" +} + type HttpHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -683,7 +778,7 @@ type HttpHeader struct { func (x *HttpHeader) Reset() { *x = HttpHeader{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[10] + mi := &file_proto_orchestrator_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -696,7 +791,7 @@ func (x *HttpHeader) String() string { func (*HttpHeader) ProtoMessage() {} func (x *HttpHeader) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[10] + mi := &file_proto_orchestrator_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -709,7 +804,7 @@ func (x *HttpHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpHeader.ProtoReflect.Descriptor instead. func (*HttpHeader) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{10} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{11} } func (x *HttpHeader) GetKey() string { @@ -740,7 +835,7 @@ type HttpAuthentication struct { func (x *HttpAuthentication) Reset() { *x = HttpAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[11] + mi := &file_proto_orchestrator_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +848,7 @@ func (x *HttpAuthentication) String() string { func (*HttpAuthentication) ProtoMessage() {} func (x *HttpAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[11] + mi := &file_proto_orchestrator_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +861,7 @@ func (x *HttpAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpAuthentication.ProtoReflect.Descriptor instead. func (*HttpAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{11} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{12} } func (x *HttpAuthentication) GetType() string { @@ -810,7 +905,7 @@ type ApiKeyAuthentication struct { func (x *ApiKeyAuthentication) Reset() { *x = ApiKeyAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[12] + mi := &file_proto_orchestrator_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -823,7 +918,7 @@ func (x *ApiKeyAuthentication) String() string { func (*ApiKeyAuthentication) ProtoMessage() {} func (x *ApiKeyAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[12] + mi := &file_proto_orchestrator_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -836,7 +931,7 @@ func (x *ApiKeyAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use ApiKeyAuthentication.ProtoReflect.Descriptor instead. func (*ApiKeyAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{12} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{13} } func (x *ApiKeyAuthentication) GetKey() string { @@ -872,7 +967,7 @@ type BasicAuthentication struct { func (x *BasicAuthentication) Reset() { *x = BasicAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[13] + mi := &file_proto_orchestrator_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -885,7 +980,7 @@ func (x *BasicAuthentication) String() string { func (*BasicAuthentication) ProtoMessage() {} func (x *BasicAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[13] + mi := &file_proto_orchestrator_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -898,7 +993,7 @@ func (x *BasicAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use BasicAuthentication.ProtoReflect.Descriptor instead. func (*BasicAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{13} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{14} } func (x *BasicAuthentication) GetUsername() string { @@ -926,7 +1021,7 @@ type BearerAuthentication struct { func (x *BearerAuthentication) Reset() { *x = BearerAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[14] + mi := &file_proto_orchestrator_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -939,7 +1034,7 @@ func (x *BearerAuthentication) String() string { func (*BearerAuthentication) ProtoMessage() {} func (x *BearerAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[14] + mi := &file_proto_orchestrator_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -952,7 +1047,7 @@ func (x *BearerAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use BearerAuthentication.ProtoReflect.Descriptor instead. func (*BearerAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{14} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{15} } func (x *BearerAuthentication) GetToken() string { @@ -979,7 +1074,7 @@ type GrpcRequest struct { func (x *GrpcRequest) Reset() { *x = GrpcRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[15] + mi := &file_proto_orchestrator_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -992,7 +1087,7 @@ func (x *GrpcRequest) String() string { func (*GrpcRequest) ProtoMessage() {} func (x *GrpcRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[15] + mi := &file_proto_orchestrator_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1005,7 +1100,7 @@ func (x *GrpcRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GrpcRequest.ProtoReflect.Descriptor instead. func (*GrpcRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{15} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{16} } func (x *GrpcRequest) GetProtobufFile() string { @@ -1069,7 +1164,7 @@ type GrpcHeader struct { func (x *GrpcHeader) Reset() { *x = GrpcHeader{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[16] + mi := &file_proto_orchestrator_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1082,7 +1177,7 @@ func (x *GrpcHeader) String() string { func (*GrpcHeader) ProtoMessage() {} func (x *GrpcHeader) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[16] + mi := &file_proto_orchestrator_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1095,7 +1190,7 @@ func (x *GrpcHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use GrpcHeader.ProtoReflect.Descriptor instead. func (*GrpcHeader) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{16} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{17} } func (x *GrpcHeader) GetKey() string { @@ -1123,7 +1218,7 @@ type TraceIDRequest struct { func (x *TraceIDRequest) Reset() { *x = TraceIDRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[17] + mi := &file_proto_orchestrator_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1136,7 +1231,7 @@ func (x *TraceIDRequest) String() string { func (*TraceIDRequest) ProtoMessage() {} func (x *TraceIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[17] + mi := &file_proto_orchestrator_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1149,7 +1244,7 @@ func (x *TraceIDRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TraceIDRequest.ProtoReflect.Descriptor instead. func (*TraceIDRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{17} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{18} } func (x *TraceIDRequest) GetId() string { @@ -1175,7 +1270,7 @@ type TriggerResponse struct { func (x *TriggerResponse) Reset() { *x = TriggerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[18] + mi := &file_proto_orchestrator_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1188,7 +1283,7 @@ func (x *TriggerResponse) String() string { func (*TriggerResponse) ProtoMessage() {} func (x *TriggerResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[18] + mi := &file_proto_orchestrator_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1201,7 +1296,7 @@ func (x *TriggerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerResponse.ProtoReflect.Descriptor instead. func (*TriggerResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{18} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{19} } func (x *TriggerResponse) GetRequestID() string { @@ -1258,12 +1353,13 @@ type TriggerResult struct { Kafka *KafkaResponse `protobuf:"bytes,5,opt,name=kafka,proto3" json:"kafka,omitempty"` Error *Error `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` PlaywrightEngine *PlaywrightEngineResponse `protobuf:"bytes,7,opt,name=playwrightEngine,proto3" json:"playwrightEngine,omitempty"` + Graphql *HttpResponse `protobuf:"bytes,8,opt,name=graphql,proto3" json:"graphql,omitempty"` } func (x *TriggerResult) Reset() { *x = TriggerResult{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[19] + mi := &file_proto_orchestrator_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1276,7 +1372,7 @@ func (x *TriggerResult) String() string { func (*TriggerResult) ProtoMessage() {} func (x *TriggerResult) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[19] + mi := &file_proto_orchestrator_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1289,7 +1385,7 @@ func (x *TriggerResult) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerResult.ProtoReflect.Descriptor instead. func (*TriggerResult) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{19} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{20} } func (x *TriggerResult) GetType() string { @@ -1341,6 +1437,13 @@ func (x *TriggerResult) GetPlaywrightEngine() *PlaywrightEngineResponse { return nil } +func (x *TriggerResult) GetGraphql() *HttpResponse { + if x != nil { + return x.Graphql + } + return nil +} + type HttpResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1355,7 +1458,7 @@ type HttpResponse struct { func (x *HttpResponse) Reset() { *x = HttpResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[20] + mi := &file_proto_orchestrator_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1368,7 +1471,7 @@ func (x *HttpResponse) String() string { func (*HttpResponse) ProtoMessage() {} func (x *HttpResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[20] + mi := &file_proto_orchestrator_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1381,7 +1484,7 @@ func (x *HttpResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpResponse.ProtoReflect.Descriptor instead. func (*HttpResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{20} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{21} } func (x *HttpResponse) GetStatusCode() int32 { @@ -1425,7 +1528,7 @@ type GrpcResponse struct { func (x *GrpcResponse) Reset() { *x = GrpcResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[21] + mi := &file_proto_orchestrator_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1438,7 +1541,7 @@ func (x *GrpcResponse) String() string { func (*GrpcResponse) ProtoMessage() {} func (x *GrpcResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[21] + mi := &file_proto_orchestrator_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1451,7 +1554,7 @@ func (x *GrpcResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GrpcResponse.ProtoReflect.Descriptor instead. func (*GrpcResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{21} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{22} } func (x *GrpcResponse) GetStatusCode() int32 { @@ -1486,7 +1589,7 @@ type TraceIdResponse struct { func (x *TraceIdResponse) Reset() { *x = TraceIdResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[22] + mi := &file_proto_orchestrator_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1499,7 +1602,7 @@ func (x *TraceIdResponse) String() string { func (*TraceIdResponse) ProtoMessage() {} func (x *TraceIdResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[22] + mi := &file_proto_orchestrator_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,7 +1615,7 @@ func (x *TraceIdResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TraceIdResponse.ProtoReflect.Descriptor instead. func (*TraceIdResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{22} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{23} } func (x *TraceIdResponse) GetId() string { @@ -1533,7 +1636,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[23] + mi := &file_proto_orchestrator_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1546,7 +1649,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[23] + mi := &file_proto_orchestrator_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1559,7 +1662,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{23} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{24} } func (x *Error) GetMessage() string { @@ -1584,7 +1687,7 @@ type OTLPConnectionTestRequest struct { func (x *OTLPConnectionTestRequest) Reset() { *x = OTLPConnectionTestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[24] + mi := &file_proto_orchestrator_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1597,7 +1700,7 @@ func (x *OTLPConnectionTestRequest) String() string { func (*OTLPConnectionTestRequest) ProtoMessage() {} func (x *OTLPConnectionTestRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[24] + mi := &file_proto_orchestrator_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1610,7 +1713,7 @@ func (x *OTLPConnectionTestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use OTLPConnectionTestRequest.ProtoReflect.Descriptor instead. func (*OTLPConnectionTestRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{24} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{25} } func (x *OTLPConnectionTestRequest) GetRequestID() string { @@ -1649,7 +1752,7 @@ type OTLPConnectionTestResponse struct { func (x *OTLPConnectionTestResponse) Reset() { *x = OTLPConnectionTestResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[25] + mi := &file_proto_orchestrator_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1662,7 +1765,7 @@ func (x *OTLPConnectionTestResponse) String() string { func (*OTLPConnectionTestResponse) ProtoMessage() {} func (x *OTLPConnectionTestResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[25] + mi := &file_proto_orchestrator_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1675,7 +1778,7 @@ func (x *OTLPConnectionTestResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OTLPConnectionTestResponse.ProtoReflect.Descriptor instead. func (*OTLPConnectionTestResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{25} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{26} } func (x *OTLPConnectionTestResponse) GetRequestID() string { @@ -1713,6 +1816,140 @@ func (x *OTLPConnectionTestResponse) GetMetadata() map[string]string { return nil } +type GraphqlIntrospectRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestID string `protobuf:"bytes,1,opt,name=requestID,proto3" json:"requestID,omitempty"` + Graphql *GraphqlRequest `protobuf:"bytes,2,opt,name=graphql,proto3" json:"graphql,omitempty"` + Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GraphqlIntrospectRequest) Reset() { + *x = GraphqlIntrospectRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_orchestrator_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphqlIntrospectRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphqlIntrospectRequest) ProtoMessage() {} + +func (x *GraphqlIntrospectRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_orchestrator_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphqlIntrospectRequest.ProtoReflect.Descriptor instead. +func (*GraphqlIntrospectRequest) Descriptor() ([]byte, []int) { + return file_proto_orchestrator_proto_rawDescGZIP(), []int{27} +} + +func (x *GraphqlIntrospectRequest) GetRequestID() string { + if x != nil { + return x.RequestID + } + return "" +} + +func (x *GraphqlIntrospectRequest) GetGraphql() *GraphqlRequest { + if x != nil { + return x.Graphql + } + return nil +} + +func (x *GraphqlIntrospectRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type GraphqlIntrospectResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RequestID string `protobuf:"bytes,1,opt,name=requestID,proto3" json:"requestID,omitempty"` + Response *HttpResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + AgentIdentification *AgentIdentification `protobuf:"bytes,3,opt,name=agentIdentification,proto3" json:"agentIdentification,omitempty"` + Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GraphqlIntrospectResponse) Reset() { + *x = GraphqlIntrospectResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_orchestrator_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GraphqlIntrospectResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GraphqlIntrospectResponse) ProtoMessage() {} + +func (x *GraphqlIntrospectResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_orchestrator_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GraphqlIntrospectResponse.ProtoReflect.Descriptor instead. +func (*GraphqlIntrospectResponse) Descriptor() ([]byte, []int) { + return file_proto_orchestrator_proto_rawDescGZIP(), []int{28} +} + +func (x *GraphqlIntrospectResponse) GetRequestID() string { + if x != nil { + return x.RequestID + } + return "" +} + +func (x *GraphqlIntrospectResponse) GetResponse() *HttpResponse { + if x != nil { + return x.Response + } + return nil +} + +func (x *GraphqlIntrospectResponse) GetAgentIdentification() *AgentIdentification { + if x != nil { + return x.AgentIdentification + } + return nil +} + +func (x *GraphqlIntrospectResponse) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + type DataStoreConnectionTestRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1726,7 +1963,7 @@ type DataStoreConnectionTestRequest struct { func (x *DataStoreConnectionTestRequest) Reset() { *x = DataStoreConnectionTestRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[26] + mi := &file_proto_orchestrator_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1739,7 +1976,7 @@ func (x *DataStoreConnectionTestRequest) String() string { func (*DataStoreConnectionTestRequest) ProtoMessage() {} func (x *DataStoreConnectionTestRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[26] + mi := &file_proto_orchestrator_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1752,7 +1989,7 @@ func (x *DataStoreConnectionTestRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStoreConnectionTestRequest.ProtoReflect.Descriptor instead. func (*DataStoreConnectionTestRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{26} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{29} } func (x *DataStoreConnectionTestRequest) GetRequestID() string { @@ -1791,7 +2028,7 @@ type DataStoreConnectionTestResponse struct { func (x *DataStoreConnectionTestResponse) Reset() { *x = DataStoreConnectionTestResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[27] + mi := &file_proto_orchestrator_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1804,7 +2041,7 @@ func (x *DataStoreConnectionTestResponse) String() string { func (*DataStoreConnectionTestResponse) ProtoMessage() {} func (x *DataStoreConnectionTestResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[27] + mi := &file_proto_orchestrator_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1817,7 +2054,7 @@ func (x *DataStoreConnectionTestResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStoreConnectionTestResponse.ProtoReflect.Descriptor instead. func (*DataStoreConnectionTestResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{27} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{30} } func (x *DataStoreConnectionTestResponse) GetRequestID() string { @@ -1869,7 +2106,7 @@ type DataStoreConnectionTestSteps struct { func (x *DataStoreConnectionTestSteps) Reset() { *x = DataStoreConnectionTestSteps{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[28] + mi := &file_proto_orchestrator_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1882,7 +2119,7 @@ func (x *DataStoreConnectionTestSteps) String() string { func (*DataStoreConnectionTestSteps) ProtoMessage() {} func (x *DataStoreConnectionTestSteps) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[28] + mi := &file_proto_orchestrator_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1895,7 +2132,7 @@ func (x *DataStoreConnectionTestSteps) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStoreConnectionTestSteps.ProtoReflect.Descriptor instead. func (*DataStoreConnectionTestSteps) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{28} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{31} } func (x *DataStoreConnectionTestSteps) GetPortCheck() *DataStoreConnectionTestStep { @@ -1940,7 +2177,7 @@ type DataStoreConnectionTestStep struct { func (x *DataStoreConnectionTestStep) Reset() { *x = DataStoreConnectionTestStep{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[29] + mi := &file_proto_orchestrator_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1953,7 +2190,7 @@ func (x *DataStoreConnectionTestStep) String() string { func (*DataStoreConnectionTestStep) ProtoMessage() {} func (x *DataStoreConnectionTestStep) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[29] + mi := &file_proto_orchestrator_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1966,7 +2203,7 @@ func (x *DataStoreConnectionTestStep) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStoreConnectionTestStep.ProtoReflect.Descriptor instead. func (*DataStoreConnectionTestStep) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{29} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{32} } func (x *DataStoreConnectionTestStep) GetPassed() bool { @@ -2013,7 +2250,7 @@ type PollingRequest struct { func (x *PollingRequest) Reset() { *x = PollingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[30] + mi := &file_proto_orchestrator_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2026,7 +2263,7 @@ func (x *PollingRequest) String() string { func (*PollingRequest) ProtoMessage() {} func (x *PollingRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[30] + mi := &file_proto_orchestrator_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2039,7 +2276,7 @@ func (x *PollingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PollingRequest.ProtoReflect.Descriptor instead. func (*PollingRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{30} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{33} } func (x *PollingRequest) GetRequestID() string { @@ -2103,7 +2340,7 @@ type DataStore struct { func (x *DataStore) Reset() { *x = DataStore{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[31] + mi := &file_proto_orchestrator_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2116,7 +2353,7 @@ func (x *DataStore) String() string { func (*DataStore) ProtoMessage() {} func (x *DataStore) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[31] + mi := &file_proto_orchestrator_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2129,7 +2366,7 @@ func (x *DataStore) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStore.ProtoReflect.Descriptor instead. func (*DataStore) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{31} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{34} } func (x *DataStore) GetType() string { @@ -2206,7 +2443,7 @@ type JaegerConfig struct { func (x *JaegerConfig) Reset() { *x = JaegerConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[32] + mi := &file_proto_orchestrator_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2219,7 +2456,7 @@ func (x *JaegerConfig) String() string { func (*JaegerConfig) ProtoMessage() {} func (x *JaegerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[32] + mi := &file_proto_orchestrator_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2232,7 +2469,7 @@ func (x *JaegerConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use JaegerConfig.ProtoReflect.Descriptor instead. func (*JaegerConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{32} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{35} } func (x *JaegerConfig) GetGrpc() *GrpcClientSettings { @@ -2255,7 +2492,7 @@ type TempoConfig struct { func (x *TempoConfig) Reset() { *x = TempoConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[33] + mi := &file_proto_orchestrator_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2268,7 +2505,7 @@ func (x *TempoConfig) String() string { func (*TempoConfig) ProtoMessage() {} func (x *TempoConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[33] + mi := &file_proto_orchestrator_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2281,7 +2518,7 @@ func (x *TempoConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use TempoConfig.ProtoReflect.Descriptor instead. func (*TempoConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{33} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{36} } func (x *TempoConfig) GetType() string { @@ -2321,7 +2558,7 @@ type ElasticConfig struct { func (x *ElasticConfig) Reset() { *x = ElasticConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[34] + mi := &file_proto_orchestrator_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2334,7 +2571,7 @@ func (x *ElasticConfig) String() string { func (*ElasticConfig) ProtoMessage() {} func (x *ElasticConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[34] + mi := &file_proto_orchestrator_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2347,7 +2584,7 @@ func (x *ElasticConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ElasticConfig.ProtoReflect.Descriptor instead. func (*ElasticConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{34} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{37} } func (x *ElasticConfig) GetAddresses() []string { @@ -2404,7 +2641,7 @@ type SignalfxConfig struct { func (x *SignalfxConfig) Reset() { *x = SignalfxConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[35] + mi := &file_proto_orchestrator_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2417,7 +2654,7 @@ func (x *SignalfxConfig) String() string { func (*SignalfxConfig) ProtoMessage() {} func (x *SignalfxConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[35] + mi := &file_proto_orchestrator_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2430,7 +2667,7 @@ func (x *SignalfxConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SignalfxConfig.ProtoReflect.Descriptor instead. func (*SignalfxConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{35} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{38} } func (x *SignalfxConfig) GetRealm() string { @@ -2462,7 +2699,7 @@ type AwsXRayConfig struct { func (x *AwsXRayConfig) Reset() { *x = AwsXRayConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[36] + mi := &file_proto_orchestrator_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2475,7 +2712,7 @@ func (x *AwsXRayConfig) String() string { func (*AwsXRayConfig) ProtoMessage() {} func (x *AwsXRayConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[36] + mi := &file_proto_orchestrator_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2488,7 +2725,7 @@ func (x *AwsXRayConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AwsXRayConfig.ProtoReflect.Descriptor instead. func (*AwsXRayConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{36} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{39} } func (x *AwsXRayConfig) GetRegion() string { @@ -2540,7 +2777,7 @@ type AzureAppInsightsConfig struct { func (x *AzureAppInsightsConfig) Reset() { *x = AzureAppInsightsConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[37] + mi := &file_proto_orchestrator_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2553,7 +2790,7 @@ func (x *AzureAppInsightsConfig) String() string { func (*AzureAppInsightsConfig) ProtoMessage() {} func (x *AzureAppInsightsConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[37] + mi := &file_proto_orchestrator_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2566,7 +2803,7 @@ func (x *AzureAppInsightsConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use AzureAppInsightsConfig.ProtoReflect.Descriptor instead. func (*AzureAppInsightsConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{37} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{40} } func (x *AzureAppInsightsConfig) GetUseAzureActiveDirectoryAuth() bool { @@ -2610,7 +2847,7 @@ type SumoLogicConfig struct { func (x *SumoLogicConfig) Reset() { *x = SumoLogicConfig{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[38] + mi := &file_proto_orchestrator_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2623,7 +2860,7 @@ func (x *SumoLogicConfig) String() string { func (*SumoLogicConfig) ProtoMessage() {} func (x *SumoLogicConfig) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[38] + mi := &file_proto_orchestrator_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2636,7 +2873,7 @@ func (x *SumoLogicConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SumoLogicConfig.ProtoReflect.Descriptor instead. func (*SumoLogicConfig) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{38} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{41} } func (x *SumoLogicConfig) GetURL() string { @@ -2674,7 +2911,7 @@ type HttpClientSettings struct { func (x *HttpClientSettings) Reset() { *x = HttpClientSettings{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[39] + mi := &file_proto_orchestrator_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2687,7 +2924,7 @@ func (x *HttpClientSettings) String() string { func (*HttpClientSettings) ProtoMessage() {} func (x *HttpClientSettings) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[39] + mi := &file_proto_orchestrator_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2700,7 +2937,7 @@ func (x *HttpClientSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use HttpClientSettings.ProtoReflect.Descriptor instead. func (*HttpClientSettings) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{39} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{42} } func (x *HttpClientSettings) GetUrl() string { @@ -2750,7 +2987,7 @@ type GrpcClientSettings struct { func (x *GrpcClientSettings) Reset() { *x = GrpcClientSettings{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[40] + mi := &file_proto_orchestrator_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2763,7 +3000,7 @@ func (x *GrpcClientSettings) String() string { func (*GrpcClientSettings) ProtoMessage() {} func (x *GrpcClientSettings) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[40] + mi := &file_proto_orchestrator_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2776,7 +3013,7 @@ func (x *GrpcClientSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use GrpcClientSettings.ProtoReflect.Descriptor instead. func (*GrpcClientSettings) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{40} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{43} } func (x *GrpcClientSettings) GetEndpoint() string { @@ -2856,7 +3093,7 @@ type TLS struct { func (x *TLS) Reset() { *x = TLS{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[41] + mi := &file_proto_orchestrator_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +3106,7 @@ func (x *TLS) String() string { func (*TLS) ProtoMessage() {} func (x *TLS) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[41] + mi := &file_proto_orchestrator_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3119,7 @@ func (x *TLS) ProtoReflect() protoreflect.Message { // Deprecated: Use TLS.ProtoReflect.Descriptor instead. func (*TLS) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{41} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{44} } func (x *TLS) GetInsecure() bool { @@ -2928,7 +3165,7 @@ type TLSSetting struct { func (x *TLSSetting) Reset() { *x = TLSSetting{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[42] + mi := &file_proto_orchestrator_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2941,7 +3178,7 @@ func (x *TLSSetting) String() string { func (*TLSSetting) ProtoMessage() {} func (x *TLSSetting) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[42] + mi := &file_proto_orchestrator_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2954,7 +3191,7 @@ func (x *TLSSetting) ProtoReflect() protoreflect.Message { // Deprecated: Use TLSSetting.ProtoReflect.Descriptor instead. func (*TLSSetting) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{42} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{45} } func (x *TLSSetting) GetCAFile() string { @@ -3011,7 +3248,7 @@ type PollingResponse struct { func (x *PollingResponse) Reset() { *x = PollingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[43] + mi := &file_proto_orchestrator_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3024,7 +3261,7 @@ func (x *PollingResponse) String() string { func (*PollingResponse) ProtoMessage() {} func (x *PollingResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[43] + mi := &file_proto_orchestrator_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3037,7 +3274,7 @@ func (x *PollingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PollingResponse.ProtoReflect.Descriptor instead. func (*PollingResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{43} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{46} } func (x *PollingResponse) GetRequestID() string { @@ -3120,7 +3357,7 @@ type Span struct { func (x *Span) Reset() { *x = Span{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[44] + mi := &file_proto_orchestrator_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3133,7 +3370,7 @@ func (x *Span) String() string { func (*Span) ProtoMessage() {} func (x *Span) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[44] + mi := &file_proto_orchestrator_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3146,7 +3383,7 @@ func (x *Span) ProtoReflect() protoreflect.Message { // Deprecated: Use Span.ProtoReflect.Descriptor instead. func (*Span) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{44} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{47} } func (x *Span) GetId() string { @@ -3210,7 +3447,7 @@ type KeyValuePair struct { func (x *KeyValuePair) Reset() { *x = KeyValuePair{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[45] + mi := &file_proto_orchestrator_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3223,7 +3460,7 @@ func (x *KeyValuePair) String() string { func (*KeyValuePair) ProtoMessage() {} func (x *KeyValuePair) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[45] + mi := &file_proto_orchestrator_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3236,7 +3473,7 @@ func (x *KeyValuePair) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyValuePair.ProtoReflect.Descriptor instead. func (*KeyValuePair) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{45} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{48} } func (x *KeyValuePair) GetKey() string { @@ -3270,7 +3507,7 @@ type KafkaRequest struct { func (x *KafkaRequest) Reset() { *x = KafkaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[46] + mi := &file_proto_orchestrator_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3283,7 +3520,7 @@ func (x *KafkaRequest) String() string { func (*KafkaRequest) ProtoMessage() {} func (x *KafkaRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[46] + mi := &file_proto_orchestrator_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3296,7 +3533,7 @@ func (x *KafkaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaRequest.ProtoReflect.Descriptor instead. func (*KafkaRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{46} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{49} } func (x *KafkaRequest) GetBrokerUrls() []string { @@ -3360,7 +3597,7 @@ type KafkaAuthentication struct { func (x *KafkaAuthentication) Reset() { *x = KafkaAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[47] + mi := &file_proto_orchestrator_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3373,7 +3610,7 @@ func (x *KafkaAuthentication) String() string { func (*KafkaAuthentication) ProtoMessage() {} func (x *KafkaAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[47] + mi := &file_proto_orchestrator_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3386,7 +3623,7 @@ func (x *KafkaAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaAuthentication.ProtoReflect.Descriptor instead. func (*KafkaAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{47} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{50} } func (x *KafkaAuthentication) GetType() string { @@ -3415,7 +3652,7 @@ type KafkaPlainAuthentication struct { func (x *KafkaPlainAuthentication) Reset() { *x = KafkaPlainAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[48] + mi := &file_proto_orchestrator_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3428,7 +3665,7 @@ func (x *KafkaPlainAuthentication) String() string { func (*KafkaPlainAuthentication) ProtoMessage() {} func (x *KafkaPlainAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[48] + mi := &file_proto_orchestrator_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3441,7 +3678,7 @@ func (x *KafkaPlainAuthentication) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaPlainAuthentication.ProtoReflect.Descriptor instead. func (*KafkaPlainAuthentication) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{48} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{51} } func (x *KafkaPlainAuthentication) GetUsername() string { @@ -3470,7 +3707,7 @@ type KafkaResponse struct { func (x *KafkaResponse) Reset() { *x = KafkaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[49] + mi := &file_proto_orchestrator_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3483,7 +3720,7 @@ func (x *KafkaResponse) String() string { func (*KafkaResponse) ProtoMessage() {} func (x *KafkaResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[49] + mi := &file_proto_orchestrator_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3496,7 +3733,7 @@ func (x *KafkaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use KafkaResponse.ProtoReflect.Descriptor instead. func (*KafkaResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{49} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{52} } func (x *KafkaResponse) GetPartition() string { @@ -3526,7 +3763,7 @@ type PlaywrightEngineRequest struct { func (x *PlaywrightEngineRequest) Reset() { *x = PlaywrightEngineRequest{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[50] + mi := &file_proto_orchestrator_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3539,7 +3776,7 @@ func (x *PlaywrightEngineRequest) String() string { func (*PlaywrightEngineRequest) ProtoMessage() {} func (x *PlaywrightEngineRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[50] + mi := &file_proto_orchestrator_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3552,7 +3789,7 @@ func (x *PlaywrightEngineRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PlaywrightEngineRequest.ProtoReflect.Descriptor instead. func (*PlaywrightEngineRequest) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{50} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{53} } func (x *PlaywrightEngineRequest) GetTarget() string { @@ -3588,7 +3825,7 @@ type PlaywrightEngineResponse struct { func (x *PlaywrightEngineResponse) Reset() { *x = PlaywrightEngineResponse{} if protoimpl.UnsafeEnabled { - mi := &file_proto_orchestrator_proto_msgTypes[51] + mi := &file_proto_orchestrator_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3601,7 +3838,7 @@ func (x *PlaywrightEngineResponse) String() string { func (*PlaywrightEngineResponse) ProtoMessage() {} func (x *PlaywrightEngineResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_orchestrator_proto_msgTypes[51] + mi := &file_proto_orchestrator_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3614,7 +3851,7 @@ func (x *PlaywrightEngineResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PlaywrightEngineResponse.ProtoReflect.Descriptor instead. func (*PlaywrightEngineResponse) Descriptor() ([]byte, []int) { - return file_proto_orchestrator_proto_rawDescGZIP(), []int{51} + return file_proto_orchestrator_proto_rawDescGZIP(), []int{54} } func (x *PlaywrightEngineResponse) GetSuccess() bool { @@ -3700,7 +3937,7 @@ var file_proto_orchestrator_proto_rawDesc = []byte{ 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x95, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, @@ -3718,562 +3955,629 @@ var file_proto_orchestrator_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, - 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x53, 0x4c, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x53, - 0x53, 0x4c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x34, - 0x0a, 0x0a, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xc4, 0x01, 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x33, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x70, - 0x69, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, - 0x63, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, - 0x65, 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x14, 0x41, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 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, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x22, 0x4d, 0x0a, 0x13, 0x42, - 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x42, 0x65, - 0x61, 0x72, 0x65, 0x72, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x89, 0x02, 0x0a, 0x0b, 0x47, 0x72, 0x70, - 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, + 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x22, 0xe5, 0x01, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 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, 0x22, 0x20, 0x0a, 0x0e, 0x54, 0x72, - 0x61, 0x63, 0x65, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe6, 0x02, 0x0a, - 0x0f, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x4c, - 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, - 0x73, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, 0x3a, 0x0a, 0x0d, 0x74, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 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, 0xc4, 0x02, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x68, - 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, - 0x68, 0x74, 0x74, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x30, 0x0a, - 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, - 0x2a, 0x0a, 0x05, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x12, 0x22, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x4b, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, - 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, - 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x87, 0x01, 0x0a, - 0x0c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, - 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x71, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x21, 0x0a, 0x0f, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 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, - 0xe6, 0x01, 0x0a, 0x19, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, - 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x4a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x53, 0x4c, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x53, 0x53, 0x4c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xe8, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x53, 0x4c, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x53, 0x53, 0x4c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x48, 0x74, + 0x74, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, + 0x22, 0xc4, 0x01, 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x61, + 0x70, 0x69, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x12, 0x30, 0x0a, 0x05, 0x62, 0x61, 0x73, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x62, 0x61, 0x73, + 0x69, 0x63, 0x12, 0x33, 0x0a, 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x42, 0x65, 0x61, 0x72, 0x65, + 0x72, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x14, 0x41, 0x70, 0x69, 0x4b, 0x65, + 0x79, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x6e, 0x22, 0x4d, 0x0a, 0x13, 0x42, 0x61, 0x73, 0x69, 0x63, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x89, 0x02, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, + 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x2d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x34, 0x0a, 0x0a, 0x47, 0x72, 0x70, 0x63, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0x20, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe6, 0x02, 0x0a, 0x0f, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, + 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, + 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, 0x3a, 0x0a, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 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, 0xf3, 0x02, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, + 0x12, 0x27, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x30, 0x0a, 0x07, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x05, 0x6b, + 0x61, 0x66, 0x6b, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x05, 0x6b, 0x61, 0x66, 0x6b, 0x61, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4b, 0x0a, 0x10, 0x70, + 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, + 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x71, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x22, 0x87, 0x01, 0x0a, 0x0c, 0x48, 0x74, 0x74, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x2b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, + 0x79, 0x22, 0x71, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x22, 0x21, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x65, 0x49, 0x64, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 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, 0xe6, 0x01, 0x0a, 0x19, 0x4f, + 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x74, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, + 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 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, 0xde, 0x02, 0x0a, 0x1a, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, + 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x70, 0x61, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 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, 0xf1, 0x01, 0x0a, 0x18, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, + 0x2f, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x67, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, + 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, + 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xde, 0x02, 0x0a, 0x1a, 0x4f, 0x54, 0x4c, - 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc1, 0x02, 0x0a, 0x19, 0x47, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, + 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, - 0x73, 0x74, 0x53, 0x70, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x4b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xfc, 0x01, 0x0a, 0x1e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x09, 0x64, 0x61, - 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xfc, 0x01, 0x0a, + 0x1e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x2e, 0x0a, + 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x4f, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, + 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xf7, 0x02, 0x0a, 0x1f, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x4c, 0x0a, + 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x73, + 0x74, 0x65, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x73, 0x52, + 0x05, 0x73, 0x74, 0x65, 0x70, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 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, 0xba, 0x02, 0x0a, 0x1c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, + 0x74, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, 0x09, 0x70, + 0x6f, 0x72, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, + 0x65, 0x70, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x12, 0x4a, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, 0x0e, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0b, + 0x66, 0x65, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, + 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, 0x0b, 0x66, 0x65, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x63, + 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x1b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0xa4, 0x02, 0x0a, 0x0e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, + 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x09, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, - 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xf7, 0x02, 0x0a, 0x1f, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x65, 0x70, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x73, 0x52, 0x05, 0x73, 0x74, - 0x65, 0x70, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 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, 0xba, 0x02, 0x0a, 0x1c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, - 0x65, 0x70, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, - 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, - 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0b, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, - 0x65, 0x70, 0x52, 0x0b, 0x66, 0x65, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, - 0x7d, 0x0a, 0x1b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa4, - 0x02, 0x0a, 0x0e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, - 0x16, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x2e, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x09, 0x64, 0x61, - 0x74, 0x61, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc6, 0x03, 0x0a, 0x09, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6a, 0x61, + 0x65, 0x67, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x06, 0x6a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x65, 0x6d, 0x70, 0x6f, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x12, 0x34, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6c, + 0x61, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x70, 0x65, + 0x6e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x6c, 0x61, 0x73, 0x74, + 0x69, 0x63, 0x61, 0x70, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0a, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x61, 0x70, 0x6d, 0x12, 0x31, 0x0a, + 0x08, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, + 0x12, 0x2e, 0x0a, 0x07, 0x61, 0x77, 0x73, 0x78, 0x72, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x77, 0x73, 0x58, 0x52, 0x61, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x61, 0x77, 0x73, 0x78, 0x72, 0x61, 0x79, + 0x12, 0x49, 0x0a, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, + 0x75, 0x6d, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x75, 0x6d, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x63, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6f, 0x6c, 0x6f, 0x67, 0x69, + 0x63, 0x22, 0x3d, 0x0a, 0x0c, 0x4a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x2d, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, + 0x22, 0x7f, 0x0a, 0x0b, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x68, 0x74, + 0x74, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, + 0x63, 0x22, 0xcd, 0x01, 0x0a, 0x0d, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, + 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, + 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xbf, 0x01, 0x0a, 0x0d, 0x41, 0x77, 0x73, 0x58, 0x52, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, 0x65, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x49, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x1b, + 0x75, 0x73, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x1b, 0x75, 0x73, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x41, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x72, 0x6d, 0x49, 0x64, 0x22, 0x5d, + 0x0a, 0x0f, 0x53, 0x75, 0x6d, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x52, 0x4c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x22, 0x85, 0x02, + 0x0a, 0x12, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x40, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x48, 0x74, 0x74, 0x70, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, + 0x53, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 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, 0xc6, 0x03, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6a, 0x61, 0x65, 0x67, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x4a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x6a, 0x61, - 0x65, 0x67, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x05, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x12, 0x34, - 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6c, 0x61, 0x73, 0x74, - 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x61, - 0x70, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, - 0x65, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x61, 0x70, 0x6d, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x12, 0x2e, 0x0a, - 0x07, 0x61, 0x77, 0x73, 0x78, 0x72, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x77, 0x73, 0x58, 0x52, 0x61, 0x79, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x61, 0x77, 0x73, 0x78, 0x72, 0x61, 0x79, 0x12, 0x49, 0x0a, - 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x75, 0x6d, 0x6f, - 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x75, 0x6d, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x22, 0x3d, - 0x0a, 0x0c, 0x4a, 0x61, 0x65, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, - 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x22, 0x7f, 0x0a, - 0x0b, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, - 0x2d, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x22, 0xcd, - 0x01, 0x0a, 0x0d, 0x45, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x20, 0x0a, 0x0b, - 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2e, - 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x3c, - 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x66, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbf, 0x01, 0x0a, - 0x0d, 0x41, 0x77, 0x73, 0x58, 0x52, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4b, 0x65, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, - 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x41, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x75, 0x73, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x75, 0x74, 0x68, 0x22, 0xca, - 0x01, 0x0a, 0x16, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x1b, 0x75, 0x73, 0x65, - 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, - 0x75, 0x73, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x75, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x41, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x72, 0x6d, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x53, - 0x75, 0x6d, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, - 0x0a, 0x03, 0x55, 0x52, 0x4c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x52, 0x4c, - 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x22, 0x85, 0x02, 0x0a, 0x12, 0x48, - 0x74, 0x74, 0x70, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x40, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, - 0x70, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x52, 0x03, - 0x74, 0x6c, 0x73, 0x12, 0x41, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 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, 0xb7, 0x03, 0x0a, 0x12, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, - 0x65, 0x61, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, - 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x46, - 0x6f, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, - 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x52, 0x03, 0x74, 0x6c, - 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, - 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0xa0, 0x01, 0x0a, - 0x03, 0x54, 0x4c, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, - 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, - 0x9a, 0x01, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x41, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x41, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x03, 0x0a, - 0x0f, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x4c, - 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, - 0x73, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, - 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x49, 0x44, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x70, 0x61, 0x6e, - 0x52, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, - 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xc7, 0x01, 0x0a, 0x04, 0x53, - 0x70, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x33, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x50, 0x61, 0x69, 0x72, 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, 0x22, 0xa5, 0x02, 0x0a, - 0x0c, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x70, 0x69, 0x63, 0x12, 0x42, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x73, 0x6c, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x73, 0x73, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, - 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x41, 0x75, 0x74, - 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x35, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x50, 0x6c, 0x61, 0x69, - 0x6e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x05, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, 0x18, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x50, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x03, 0x0a, 0x12, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x64, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x61, + 0x69, 0x74, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x40, + 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x52, + 0x03, 0x74, 0x6c, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, + 0x75, 0x74, 0x68, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, + 0xa0, 0x01, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, + 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, + 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x0a, 0x54, 0x4c, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x41, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x41, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x65, 0x72, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x65, 0x72, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0xab, 0x03, 0x0a, 0x0f, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x44, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, + 0x44, 0x12, 0x4c, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, + 0x70, 0x61, 0x6e, 0x52, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x40, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0xc7, 0x01, + 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, + 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 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, 0x22, + 0xa5, 0x02, 0x0a, 0x0c, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x42, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x73, + 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x73, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4b, 0x65, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x4b, 0x61, 0x66, 0x6b, 0x61, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x4b, 0x61, - 0x66, 0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x22, 0x61, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x22, 0x46, 0x0a, 0x18, 0x50, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 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, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x75, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x32, 0xc1, 0x07, 0x0a, - 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3d, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x18, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x74, 0x6f, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x14, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x11, 0x53, - 0x65, 0x6e, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, - 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x15, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x6f, - 0x6c, 0x6c, 0x65, 0x64, 0x53, 0x70, 0x61, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x68, 0x75, - 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x22, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x6e, 0x52, 0x05, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x22, 0x52, 0x0a, 0x18, 0x4b, 0x61, 0x66, + 0x6b, 0x61, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x45, 0x0a, + 0x0d, 0x4b, 0x61, 0x66, 0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x22, 0x61, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x77, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x46, 0x0a, 0x18, 0x50, 0x6c, 0x61, 0x79, 0x77, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 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, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x75, 0x74, 0x32, + 0xf8, 0x08, 0x0a, 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x3d, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, + 0x4e, 0x0a, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x51, 0x0a, - 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x32, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x4d, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3b, + 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x13, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x15, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x39, 0x0a, 0x0f, 0x53, 0x65, 0x6e, + 0x64, 0x50, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x53, 0x70, 0x61, 0x6e, 0x73, 0x12, 0x16, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x22, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x1a, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, + 0x12, 0x51, 0x0a, 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x54, 0x4c, 0x50, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x24, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x21, 0x53, 0x65, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x21, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x47, + 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x24, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x21, 0x53, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, - 0x75, 0x62, 0x65, 0x73, 0x68, 0x6f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x74, 0x65, 0x73, - 0x74, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x72, 0x61, + 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x1b, 0x53, 0x65, 0x6e, + 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x71, 0x6c, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x0c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x73, 0x68, 0x6f, + 0x70, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4288,7 +4592,7 @@ func file_proto_orchestrator_proto_rawDescGZIP() []byte { return file_proto_orchestrator_proto_rawDescData } -var file_proto_orchestrator_proto_msgTypes = make([]protoimpl.MessageInfo, 64) +var file_proto_orchestrator_proto_msgTypes = make([]protoimpl.MessageInfo, 69) var file_proto_orchestrator_proto_goTypes = []interface{}{ (*Empty)(nil), // 0: proto.Empty (*StopRequest)(nil), // 1: proto.StopRequest @@ -4300,160 +4604,178 @@ var file_proto_orchestrator_proto_goTypes = []interface{}{ (*TriggerRequest)(nil), // 7: proto.TriggerRequest (*Trigger)(nil), // 8: proto.Trigger (*HttpRequest)(nil), // 9: proto.HttpRequest - (*HttpHeader)(nil), // 10: proto.HttpHeader - (*HttpAuthentication)(nil), // 11: proto.HttpAuthentication - (*ApiKeyAuthentication)(nil), // 12: proto.ApiKeyAuthentication - (*BasicAuthentication)(nil), // 13: proto.BasicAuthentication - (*BearerAuthentication)(nil), // 14: proto.BearerAuthentication - (*GrpcRequest)(nil), // 15: proto.GrpcRequest - (*GrpcHeader)(nil), // 16: proto.GrpcHeader - (*TraceIDRequest)(nil), // 17: proto.TraceIDRequest - (*TriggerResponse)(nil), // 18: proto.TriggerResponse - (*TriggerResult)(nil), // 19: proto.TriggerResult - (*HttpResponse)(nil), // 20: proto.HttpResponse - (*GrpcResponse)(nil), // 21: proto.GrpcResponse - (*TraceIdResponse)(nil), // 22: proto.TraceIdResponse - (*Error)(nil), // 23: proto.Error - (*OTLPConnectionTestRequest)(nil), // 24: proto.OTLPConnectionTestRequest - (*OTLPConnectionTestResponse)(nil), // 25: proto.OTLPConnectionTestResponse - (*DataStoreConnectionTestRequest)(nil), // 26: proto.DataStoreConnectionTestRequest - (*DataStoreConnectionTestResponse)(nil), // 27: proto.DataStoreConnectionTestResponse - (*DataStoreConnectionTestSteps)(nil), // 28: proto.DataStoreConnectionTestSteps - (*DataStoreConnectionTestStep)(nil), // 29: proto.DataStoreConnectionTestStep - (*PollingRequest)(nil), // 30: proto.PollingRequest - (*DataStore)(nil), // 31: proto.DataStore - (*JaegerConfig)(nil), // 32: proto.JaegerConfig - (*TempoConfig)(nil), // 33: proto.TempoConfig - (*ElasticConfig)(nil), // 34: proto.ElasticConfig - (*SignalfxConfig)(nil), // 35: proto.SignalfxConfig - (*AwsXRayConfig)(nil), // 36: proto.AwsXRayConfig - (*AzureAppInsightsConfig)(nil), // 37: proto.AzureAppInsightsConfig - (*SumoLogicConfig)(nil), // 38: proto.SumoLogicConfig - (*HttpClientSettings)(nil), // 39: proto.HttpClientSettings - (*GrpcClientSettings)(nil), // 40: proto.GrpcClientSettings - (*TLS)(nil), // 41: proto.TLS - (*TLSSetting)(nil), // 42: proto.TLSSetting - (*PollingResponse)(nil), // 43: proto.PollingResponse - (*Span)(nil), // 44: proto.Span - (*KeyValuePair)(nil), // 45: proto.KeyValuePair - (*KafkaRequest)(nil), // 46: proto.KafkaRequest - (*KafkaAuthentication)(nil), // 47: proto.KafkaAuthentication - (*KafkaPlainAuthentication)(nil), // 48: proto.KafkaPlainAuthentication - (*KafkaResponse)(nil), // 49: proto.KafkaResponse - (*PlaywrightEngineRequest)(nil), // 50: proto.PlaywrightEngineRequest - (*PlaywrightEngineResponse)(nil), // 51: proto.PlaywrightEngineResponse - nil, // 52: proto.StopRequest.MetadataEntry - nil, // 53: proto.ShutdownRequest.MetadataEntry - nil, // 54: proto.TriggerRequest.MetadataEntry - nil, // 55: proto.TriggerResponse.MetadataEntry - nil, // 56: proto.OTLPConnectionTestRequest.MetadataEntry - nil, // 57: proto.OTLPConnectionTestResponse.MetadataEntry - nil, // 58: proto.DataStoreConnectionTestRequest.MetadataEntry - nil, // 59: proto.DataStoreConnectionTestResponse.MetadataEntry - nil, // 60: proto.PollingRequest.MetadataEntry - nil, // 61: proto.HttpClientSettings.HeadersEntry - nil, // 62: proto.GrpcClientSettings.HeadersEntry - nil, // 63: proto.PollingResponse.MetadataEntry + (*GraphqlRequest)(nil), // 10: proto.GraphqlRequest + (*HttpHeader)(nil), // 11: proto.HttpHeader + (*HttpAuthentication)(nil), // 12: proto.HttpAuthentication + (*ApiKeyAuthentication)(nil), // 13: proto.ApiKeyAuthentication + (*BasicAuthentication)(nil), // 14: proto.BasicAuthentication + (*BearerAuthentication)(nil), // 15: proto.BearerAuthentication + (*GrpcRequest)(nil), // 16: proto.GrpcRequest + (*GrpcHeader)(nil), // 17: proto.GrpcHeader + (*TraceIDRequest)(nil), // 18: proto.TraceIDRequest + (*TriggerResponse)(nil), // 19: proto.TriggerResponse + (*TriggerResult)(nil), // 20: proto.TriggerResult + (*HttpResponse)(nil), // 21: proto.HttpResponse + (*GrpcResponse)(nil), // 22: proto.GrpcResponse + (*TraceIdResponse)(nil), // 23: proto.TraceIdResponse + (*Error)(nil), // 24: proto.Error + (*OTLPConnectionTestRequest)(nil), // 25: proto.OTLPConnectionTestRequest + (*OTLPConnectionTestResponse)(nil), // 26: proto.OTLPConnectionTestResponse + (*GraphqlIntrospectRequest)(nil), // 27: proto.GraphqlIntrospectRequest + (*GraphqlIntrospectResponse)(nil), // 28: proto.GraphqlIntrospectResponse + (*DataStoreConnectionTestRequest)(nil), // 29: proto.DataStoreConnectionTestRequest + (*DataStoreConnectionTestResponse)(nil), // 30: proto.DataStoreConnectionTestResponse + (*DataStoreConnectionTestSteps)(nil), // 31: proto.DataStoreConnectionTestSteps + (*DataStoreConnectionTestStep)(nil), // 32: proto.DataStoreConnectionTestStep + (*PollingRequest)(nil), // 33: proto.PollingRequest + (*DataStore)(nil), // 34: proto.DataStore + (*JaegerConfig)(nil), // 35: proto.JaegerConfig + (*TempoConfig)(nil), // 36: proto.TempoConfig + (*ElasticConfig)(nil), // 37: proto.ElasticConfig + (*SignalfxConfig)(nil), // 38: proto.SignalfxConfig + (*AwsXRayConfig)(nil), // 39: proto.AwsXRayConfig + (*AzureAppInsightsConfig)(nil), // 40: proto.AzureAppInsightsConfig + (*SumoLogicConfig)(nil), // 41: proto.SumoLogicConfig + (*HttpClientSettings)(nil), // 42: proto.HttpClientSettings + (*GrpcClientSettings)(nil), // 43: proto.GrpcClientSettings + (*TLS)(nil), // 44: proto.TLS + (*TLSSetting)(nil), // 45: proto.TLSSetting + (*PollingResponse)(nil), // 46: proto.PollingResponse + (*Span)(nil), // 47: proto.Span + (*KeyValuePair)(nil), // 48: proto.KeyValuePair + (*KafkaRequest)(nil), // 49: proto.KafkaRequest + (*KafkaAuthentication)(nil), // 50: proto.KafkaAuthentication + (*KafkaPlainAuthentication)(nil), // 51: proto.KafkaPlainAuthentication + (*KafkaResponse)(nil), // 52: proto.KafkaResponse + (*PlaywrightEngineRequest)(nil), // 53: proto.PlaywrightEngineRequest + (*PlaywrightEngineResponse)(nil), // 54: proto.PlaywrightEngineResponse + nil, // 55: proto.StopRequest.MetadataEntry + nil, // 56: proto.ShutdownRequest.MetadataEntry + nil, // 57: proto.TriggerRequest.MetadataEntry + nil, // 58: proto.TriggerResponse.MetadataEntry + nil, // 59: proto.OTLPConnectionTestRequest.MetadataEntry + nil, // 60: proto.OTLPConnectionTestResponse.MetadataEntry + nil, // 61: proto.GraphqlIntrospectRequest.MetadataEntry + nil, // 62: proto.GraphqlIntrospectResponse.MetadataEntry + nil, // 63: proto.DataStoreConnectionTestRequest.MetadataEntry + nil, // 64: proto.DataStoreConnectionTestResponse.MetadataEntry + nil, // 65: proto.PollingRequest.MetadataEntry + nil, // 66: proto.HttpClientSettings.HeadersEntry + nil, // 67: proto.GrpcClientSettings.HeadersEntry + nil, // 68: proto.PollingResponse.MetadataEntry } var file_proto_orchestrator_proto_depIdxs = []int32{ - 52, // 0: proto.StopRequest.metadata:type_name -> proto.StopRequest.MetadataEntry + 55, // 0: proto.StopRequest.metadata:type_name -> proto.StopRequest.MetadataEntry 4, // 1: proto.AgentConfiguration.configuration:type_name -> proto.SessionConfiguration 6, // 2: proto.AgentConfiguration.identification:type_name -> proto.AgentIdentification - 53, // 3: proto.ShutdownRequest.metadata:type_name -> proto.ShutdownRequest.MetadataEntry + 56, // 3: proto.ShutdownRequest.metadata:type_name -> proto.ShutdownRequest.MetadataEntry 8, // 4: proto.TriggerRequest.trigger:type_name -> proto.Trigger - 54, // 5: proto.TriggerRequest.metadata:type_name -> proto.TriggerRequest.MetadataEntry + 57, // 5: proto.TriggerRequest.metadata:type_name -> proto.TriggerRequest.MetadataEntry 9, // 6: proto.Trigger.http:type_name -> proto.HttpRequest - 15, // 7: proto.Trigger.grpc:type_name -> proto.GrpcRequest - 17, // 8: proto.Trigger.traceID:type_name -> proto.TraceIDRequest - 46, // 9: proto.Trigger.kafka:type_name -> proto.KafkaRequest - 50, // 10: proto.Trigger.playwrightEngine:type_name -> proto.PlaywrightEngineRequest - 10, // 11: proto.HttpRequest.headers:type_name -> proto.HttpHeader - 11, // 12: proto.HttpRequest.authentication:type_name -> proto.HttpAuthentication - 12, // 13: proto.HttpAuthentication.apiKey:type_name -> proto.ApiKeyAuthentication - 13, // 14: proto.HttpAuthentication.basic:type_name -> proto.BasicAuthentication - 14, // 15: proto.HttpAuthentication.bearer:type_name -> proto.BearerAuthentication - 11, // 16: proto.GrpcRequest.authentication:type_name -> proto.HttpAuthentication - 16, // 17: proto.GrpcRequest.metadata:type_name -> proto.GrpcHeader - 6, // 18: proto.TriggerResponse.agentIdentification:type_name -> proto.AgentIdentification - 19, // 19: proto.TriggerResponse.triggerResult:type_name -> proto.TriggerResult - 55, // 20: proto.TriggerResponse.metadata:type_name -> proto.TriggerResponse.MetadataEntry - 20, // 21: proto.TriggerResult.http:type_name -> proto.HttpResponse - 21, // 22: proto.TriggerResult.grpc:type_name -> proto.GrpcResponse - 22, // 23: proto.TriggerResult.traceID:type_name -> proto.TraceIdResponse - 49, // 24: proto.TriggerResult.kafka:type_name -> proto.KafkaResponse - 23, // 25: proto.TriggerResult.error:type_name -> proto.Error - 51, // 26: proto.TriggerResult.playwrightEngine:type_name -> proto.PlaywrightEngineResponse - 10, // 27: proto.HttpResponse.headers:type_name -> proto.HttpHeader - 16, // 28: proto.GrpcResponse.metadata:type_name -> proto.GrpcHeader - 56, // 29: proto.OTLPConnectionTestRequest.metadata:type_name -> proto.OTLPConnectionTestRequest.MetadataEntry - 6, // 30: proto.OTLPConnectionTestResponse.agentIdentification:type_name -> proto.AgentIdentification - 57, // 31: proto.OTLPConnectionTestResponse.metadata:type_name -> proto.OTLPConnectionTestResponse.MetadataEntry - 31, // 32: proto.DataStoreConnectionTestRequest.datastore:type_name -> proto.DataStore - 58, // 33: proto.DataStoreConnectionTestRequest.metadata:type_name -> proto.DataStoreConnectionTestRequest.MetadataEntry - 6, // 34: proto.DataStoreConnectionTestResponse.agentIdentification:type_name -> proto.AgentIdentification - 28, // 35: proto.DataStoreConnectionTestResponse.steps:type_name -> proto.DataStoreConnectionTestSteps - 59, // 36: proto.DataStoreConnectionTestResponse.metadata:type_name -> proto.DataStoreConnectionTestResponse.MetadataEntry - 29, // 37: proto.DataStoreConnectionTestSteps.portCheck:type_name -> proto.DataStoreConnectionTestStep - 29, // 38: proto.DataStoreConnectionTestSteps.connectivity:type_name -> proto.DataStoreConnectionTestStep - 29, // 39: proto.DataStoreConnectionTestSteps.authentication:type_name -> proto.DataStoreConnectionTestStep - 29, // 40: proto.DataStoreConnectionTestSteps.fetchTraces:type_name -> proto.DataStoreConnectionTestStep - 31, // 41: proto.PollingRequest.datastore:type_name -> proto.DataStore - 60, // 42: proto.PollingRequest.metadata:type_name -> proto.PollingRequest.MetadataEntry - 32, // 43: proto.DataStore.jaeger:type_name -> proto.JaegerConfig - 33, // 44: proto.DataStore.tempo:type_name -> proto.TempoConfig - 34, // 45: proto.DataStore.opensearch:type_name -> proto.ElasticConfig - 34, // 46: proto.DataStore.elasticapm:type_name -> proto.ElasticConfig - 35, // 47: proto.DataStore.signalfx:type_name -> proto.SignalfxConfig - 36, // 48: proto.DataStore.awsxray:type_name -> proto.AwsXRayConfig - 37, // 49: proto.DataStore.azureappinsights:type_name -> proto.AzureAppInsightsConfig - 38, // 50: proto.DataStore.sumologic:type_name -> proto.SumoLogicConfig - 40, // 51: proto.JaegerConfig.grpc:type_name -> proto.GrpcClientSettings - 39, // 52: proto.TempoConfig.http:type_name -> proto.HttpClientSettings - 40, // 53: proto.TempoConfig.grpc:type_name -> proto.GrpcClientSettings - 61, // 54: proto.HttpClientSettings.headers:type_name -> proto.HttpClientSettings.HeadersEntry - 41, // 55: proto.HttpClientSettings.tls:type_name -> proto.TLS - 11, // 56: proto.HttpClientSettings.authentication:type_name -> proto.HttpAuthentication - 62, // 57: proto.GrpcClientSettings.headers:type_name -> proto.GrpcClientSettings.HeadersEntry - 41, // 58: proto.GrpcClientSettings.tls:type_name -> proto.TLS - 11, // 59: proto.GrpcClientSettings.auth:type_name -> proto.HttpAuthentication - 42, // 60: proto.TLS.settings:type_name -> proto.TLSSetting - 6, // 61: proto.PollingResponse.agentIdentification:type_name -> proto.AgentIdentification - 44, // 62: proto.PollingResponse.spans:type_name -> proto.Span - 23, // 63: proto.PollingResponse.error:type_name -> proto.Error - 63, // 64: proto.PollingResponse.metadata:type_name -> proto.PollingResponse.MetadataEntry - 45, // 65: proto.Span.attributes:type_name -> proto.KeyValuePair - 47, // 66: proto.KafkaRequest.authentication:type_name -> proto.KafkaAuthentication - 45, // 67: proto.KafkaRequest.headers:type_name -> proto.KeyValuePair - 48, // 68: proto.KafkaAuthentication.plain:type_name -> proto.KafkaPlainAuthentication - 2, // 69: proto.Orchestrator.Connect:input_type -> proto.ConnectRequest - 6, // 70: proto.Orchestrator.RegisterStopRequestAgent:input_type -> proto.AgentIdentification - 6, // 71: proto.Orchestrator.RegisterTriggerAgent:input_type -> proto.AgentIdentification - 18, // 72: proto.Orchestrator.SendTriggerResult:input_type -> proto.TriggerResponse - 6, // 73: proto.Orchestrator.RegisterPollerAgent:input_type -> proto.AgentIdentification - 43, // 74: proto.Orchestrator.SendPolledSpans:input_type -> proto.PollingResponse - 6, // 75: proto.Orchestrator.RegisterShutdownListener:input_type -> proto.AgentIdentification - 6, // 76: proto.Orchestrator.RegisterOTLPConnectionTestListener:input_type -> proto.AgentIdentification - 25, // 77: proto.Orchestrator.SendOTLPConnectionTestResult:input_type -> proto.OTLPConnectionTestResponse - 6, // 78: proto.Orchestrator.Ping:input_type -> proto.AgentIdentification - 6, // 79: proto.Orchestrator.RegisterDataStoreConnectionTestAgent:input_type -> proto.AgentIdentification - 27, // 80: proto.Orchestrator.SendDataStoreConnectionTestResult:input_type -> proto.DataStoreConnectionTestResponse - 3, // 81: proto.Orchestrator.Connect:output_type -> proto.AgentConfiguration - 1, // 82: proto.Orchestrator.RegisterStopRequestAgent:output_type -> proto.StopRequest - 7, // 83: proto.Orchestrator.RegisterTriggerAgent:output_type -> proto.TriggerRequest - 0, // 84: proto.Orchestrator.SendTriggerResult:output_type -> proto.Empty - 30, // 85: proto.Orchestrator.RegisterPollerAgent:output_type -> proto.PollingRequest - 0, // 86: proto.Orchestrator.SendPolledSpans:output_type -> proto.Empty - 5, // 87: proto.Orchestrator.RegisterShutdownListener:output_type -> proto.ShutdownRequest - 24, // 88: proto.Orchestrator.RegisterOTLPConnectionTestListener:output_type -> proto.OTLPConnectionTestRequest - 0, // 89: proto.Orchestrator.SendOTLPConnectionTestResult:output_type -> proto.Empty - 0, // 90: proto.Orchestrator.Ping:output_type -> proto.Empty - 26, // 91: proto.Orchestrator.RegisterDataStoreConnectionTestAgent:output_type -> proto.DataStoreConnectionTestRequest - 0, // 92: proto.Orchestrator.SendDataStoreConnectionTestResult:output_type -> proto.Empty - 81, // [81:93] is the sub-list for method output_type - 69, // [69:81] is the sub-list for method input_type - 69, // [69:69] is the sub-list for extension type_name - 69, // [69:69] is the sub-list for extension extendee - 0, // [0:69] is the sub-list for field type_name + 16, // 7: proto.Trigger.grpc:type_name -> proto.GrpcRequest + 18, // 8: proto.Trigger.traceID:type_name -> proto.TraceIDRequest + 49, // 9: proto.Trigger.kafka:type_name -> proto.KafkaRequest + 53, // 10: proto.Trigger.playwrightEngine:type_name -> proto.PlaywrightEngineRequest + 10, // 11: proto.Trigger.graphql:type_name -> proto.GraphqlRequest + 11, // 12: proto.HttpRequest.headers:type_name -> proto.HttpHeader + 12, // 13: proto.HttpRequest.authentication:type_name -> proto.HttpAuthentication + 11, // 14: proto.GraphqlRequest.headers:type_name -> proto.HttpHeader + 12, // 15: proto.GraphqlRequest.authentication:type_name -> proto.HttpAuthentication + 13, // 16: proto.HttpAuthentication.apiKey:type_name -> proto.ApiKeyAuthentication + 14, // 17: proto.HttpAuthentication.basic:type_name -> proto.BasicAuthentication + 15, // 18: proto.HttpAuthentication.bearer:type_name -> proto.BearerAuthentication + 12, // 19: proto.GrpcRequest.authentication:type_name -> proto.HttpAuthentication + 17, // 20: proto.GrpcRequest.metadata:type_name -> proto.GrpcHeader + 6, // 21: proto.TriggerResponse.agentIdentification:type_name -> proto.AgentIdentification + 20, // 22: proto.TriggerResponse.triggerResult:type_name -> proto.TriggerResult + 58, // 23: proto.TriggerResponse.metadata:type_name -> proto.TriggerResponse.MetadataEntry + 21, // 24: proto.TriggerResult.http:type_name -> proto.HttpResponse + 22, // 25: proto.TriggerResult.grpc:type_name -> proto.GrpcResponse + 23, // 26: proto.TriggerResult.traceID:type_name -> proto.TraceIdResponse + 52, // 27: proto.TriggerResult.kafka:type_name -> proto.KafkaResponse + 24, // 28: proto.TriggerResult.error:type_name -> proto.Error + 54, // 29: proto.TriggerResult.playwrightEngine:type_name -> proto.PlaywrightEngineResponse + 21, // 30: proto.TriggerResult.graphql:type_name -> proto.HttpResponse + 11, // 31: proto.HttpResponse.headers:type_name -> proto.HttpHeader + 17, // 32: proto.GrpcResponse.metadata:type_name -> proto.GrpcHeader + 59, // 33: proto.OTLPConnectionTestRequest.metadata:type_name -> proto.OTLPConnectionTestRequest.MetadataEntry + 6, // 34: proto.OTLPConnectionTestResponse.agentIdentification:type_name -> proto.AgentIdentification + 60, // 35: proto.OTLPConnectionTestResponse.metadata:type_name -> proto.OTLPConnectionTestResponse.MetadataEntry + 10, // 36: proto.GraphqlIntrospectRequest.graphql:type_name -> proto.GraphqlRequest + 61, // 37: proto.GraphqlIntrospectRequest.metadata:type_name -> proto.GraphqlIntrospectRequest.MetadataEntry + 21, // 38: proto.GraphqlIntrospectResponse.response:type_name -> proto.HttpResponse + 6, // 39: proto.GraphqlIntrospectResponse.agentIdentification:type_name -> proto.AgentIdentification + 62, // 40: proto.GraphqlIntrospectResponse.metadata:type_name -> proto.GraphqlIntrospectResponse.MetadataEntry + 34, // 41: proto.DataStoreConnectionTestRequest.datastore:type_name -> proto.DataStore + 63, // 42: proto.DataStoreConnectionTestRequest.metadata:type_name -> proto.DataStoreConnectionTestRequest.MetadataEntry + 6, // 43: proto.DataStoreConnectionTestResponse.agentIdentification:type_name -> proto.AgentIdentification + 31, // 44: proto.DataStoreConnectionTestResponse.steps:type_name -> proto.DataStoreConnectionTestSteps + 64, // 45: proto.DataStoreConnectionTestResponse.metadata:type_name -> proto.DataStoreConnectionTestResponse.MetadataEntry + 32, // 46: proto.DataStoreConnectionTestSteps.portCheck:type_name -> proto.DataStoreConnectionTestStep + 32, // 47: proto.DataStoreConnectionTestSteps.connectivity:type_name -> proto.DataStoreConnectionTestStep + 32, // 48: proto.DataStoreConnectionTestSteps.authentication:type_name -> proto.DataStoreConnectionTestStep + 32, // 49: proto.DataStoreConnectionTestSteps.fetchTraces:type_name -> proto.DataStoreConnectionTestStep + 34, // 50: proto.PollingRequest.datastore:type_name -> proto.DataStore + 65, // 51: proto.PollingRequest.metadata:type_name -> proto.PollingRequest.MetadataEntry + 35, // 52: proto.DataStore.jaeger:type_name -> proto.JaegerConfig + 36, // 53: proto.DataStore.tempo:type_name -> proto.TempoConfig + 37, // 54: proto.DataStore.opensearch:type_name -> proto.ElasticConfig + 37, // 55: proto.DataStore.elasticapm:type_name -> proto.ElasticConfig + 38, // 56: proto.DataStore.signalfx:type_name -> proto.SignalfxConfig + 39, // 57: proto.DataStore.awsxray:type_name -> proto.AwsXRayConfig + 40, // 58: proto.DataStore.azureappinsights:type_name -> proto.AzureAppInsightsConfig + 41, // 59: proto.DataStore.sumologic:type_name -> proto.SumoLogicConfig + 43, // 60: proto.JaegerConfig.grpc:type_name -> proto.GrpcClientSettings + 42, // 61: proto.TempoConfig.http:type_name -> proto.HttpClientSettings + 43, // 62: proto.TempoConfig.grpc:type_name -> proto.GrpcClientSettings + 66, // 63: proto.HttpClientSettings.headers:type_name -> proto.HttpClientSettings.HeadersEntry + 44, // 64: proto.HttpClientSettings.tls:type_name -> proto.TLS + 12, // 65: proto.HttpClientSettings.authentication:type_name -> proto.HttpAuthentication + 67, // 66: proto.GrpcClientSettings.headers:type_name -> proto.GrpcClientSettings.HeadersEntry + 44, // 67: proto.GrpcClientSettings.tls:type_name -> proto.TLS + 12, // 68: proto.GrpcClientSettings.auth:type_name -> proto.HttpAuthentication + 45, // 69: proto.TLS.settings:type_name -> proto.TLSSetting + 6, // 70: proto.PollingResponse.agentIdentification:type_name -> proto.AgentIdentification + 47, // 71: proto.PollingResponse.spans:type_name -> proto.Span + 24, // 72: proto.PollingResponse.error:type_name -> proto.Error + 68, // 73: proto.PollingResponse.metadata:type_name -> proto.PollingResponse.MetadataEntry + 48, // 74: proto.Span.attributes:type_name -> proto.KeyValuePair + 50, // 75: proto.KafkaRequest.authentication:type_name -> proto.KafkaAuthentication + 48, // 76: proto.KafkaRequest.headers:type_name -> proto.KeyValuePair + 51, // 77: proto.KafkaAuthentication.plain:type_name -> proto.KafkaPlainAuthentication + 2, // 78: proto.Orchestrator.Connect:input_type -> proto.ConnectRequest + 6, // 79: proto.Orchestrator.RegisterStopRequestAgent:input_type -> proto.AgentIdentification + 6, // 80: proto.Orchestrator.RegisterTriggerAgent:input_type -> proto.AgentIdentification + 19, // 81: proto.Orchestrator.SendTriggerResult:input_type -> proto.TriggerResponse + 6, // 82: proto.Orchestrator.RegisterPollerAgent:input_type -> proto.AgentIdentification + 46, // 83: proto.Orchestrator.SendPolledSpans:input_type -> proto.PollingResponse + 6, // 84: proto.Orchestrator.RegisterShutdownListener:input_type -> proto.AgentIdentification + 6, // 85: proto.Orchestrator.RegisterOTLPConnectionTestListener:input_type -> proto.AgentIdentification + 26, // 86: proto.Orchestrator.SendOTLPConnectionTestResult:input_type -> proto.OTLPConnectionTestResponse + 6, // 87: proto.Orchestrator.Ping:input_type -> proto.AgentIdentification + 6, // 88: proto.Orchestrator.RegisterDataStoreConnectionTestAgent:input_type -> proto.AgentIdentification + 30, // 89: proto.Orchestrator.SendDataStoreConnectionTestResult:input_type -> proto.DataStoreConnectionTestResponse + 6, // 90: proto.Orchestrator.RegisterGraphqlIntrospectListener:input_type -> proto.AgentIdentification + 28, // 91: proto.Orchestrator.SendGraphqlIntrospectResult:input_type -> proto.GraphqlIntrospectResponse + 3, // 92: proto.Orchestrator.Connect:output_type -> proto.AgentConfiguration + 1, // 93: proto.Orchestrator.RegisterStopRequestAgent:output_type -> proto.StopRequest + 7, // 94: proto.Orchestrator.RegisterTriggerAgent:output_type -> proto.TriggerRequest + 0, // 95: proto.Orchestrator.SendTriggerResult:output_type -> proto.Empty + 33, // 96: proto.Orchestrator.RegisterPollerAgent:output_type -> proto.PollingRequest + 0, // 97: proto.Orchestrator.SendPolledSpans:output_type -> proto.Empty + 5, // 98: proto.Orchestrator.RegisterShutdownListener:output_type -> proto.ShutdownRequest + 25, // 99: proto.Orchestrator.RegisterOTLPConnectionTestListener:output_type -> proto.OTLPConnectionTestRequest + 0, // 100: proto.Orchestrator.SendOTLPConnectionTestResult:output_type -> proto.Empty + 0, // 101: proto.Orchestrator.Ping:output_type -> proto.Empty + 29, // 102: proto.Orchestrator.RegisterDataStoreConnectionTestAgent:output_type -> proto.DataStoreConnectionTestRequest + 0, // 103: proto.Orchestrator.SendDataStoreConnectionTestResult:output_type -> proto.Empty + 27, // 104: proto.Orchestrator.RegisterGraphqlIntrospectListener:output_type -> proto.GraphqlIntrospectRequest + 0, // 105: proto.Orchestrator.SendGraphqlIntrospectResult:output_type -> proto.Empty + 92, // [92:106] is the sub-list for method output_type + 78, // [78:92] is the sub-list for method input_type + 78, // [78:78] is the sub-list for extension type_name + 78, // [78:78] is the sub-list for extension extendee + 0, // [0:78] is the sub-list for field type_name } func init() { file_proto_orchestrator_proto_init() } @@ -4583,7 +4905,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpHeader); i { + switch v := v.(*GraphqlRequest); i { case 0: return &v.state case 1: @@ -4595,7 +4917,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpAuthentication); i { + switch v := v.(*HttpHeader); i { case 0: return &v.state case 1: @@ -4607,7 +4929,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApiKeyAuthentication); i { + switch v := v.(*HttpAuthentication); i { case 0: return &v.state case 1: @@ -4619,7 +4941,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BasicAuthentication); i { + switch v := v.(*ApiKeyAuthentication); i { case 0: return &v.state case 1: @@ -4631,7 +4953,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BearerAuthentication); i { + switch v := v.(*BasicAuthentication); i { case 0: return &v.state case 1: @@ -4643,7 +4965,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcRequest); i { + switch v := v.(*BearerAuthentication); i { case 0: return &v.state case 1: @@ -4655,7 +4977,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcHeader); i { + switch v := v.(*GrpcRequest); i { case 0: return &v.state case 1: @@ -4667,7 +4989,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TraceIDRequest); i { + switch v := v.(*GrpcHeader); i { case 0: return &v.state case 1: @@ -4679,7 +5001,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerResponse); i { + switch v := v.(*TraceIDRequest); i { case 0: return &v.state case 1: @@ -4691,7 +5013,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TriggerResult); i { + switch v := v.(*TriggerResponse); i { case 0: return &v.state case 1: @@ -4703,7 +5025,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpResponse); i { + switch v := v.(*TriggerResult); i { case 0: return &v.state case 1: @@ -4715,7 +5037,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcResponse); i { + switch v := v.(*HttpResponse); i { case 0: return &v.state case 1: @@ -4727,7 +5049,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TraceIdResponse); i { + switch v := v.(*GrpcResponse); i { case 0: return &v.state case 1: @@ -4739,7 +5061,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { + switch v := v.(*TraceIdResponse); i { case 0: return &v.state case 1: @@ -4751,7 +5073,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OTLPConnectionTestRequest); i { + switch v := v.(*Error); i { case 0: return &v.state case 1: @@ -4763,7 +5085,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OTLPConnectionTestResponse); i { + switch v := v.(*OTLPConnectionTestRequest); i { case 0: return &v.state case 1: @@ -4775,7 +5097,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataStoreConnectionTestRequest); i { + switch v := v.(*OTLPConnectionTestResponse); i { case 0: return &v.state case 1: @@ -4787,7 +5109,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataStoreConnectionTestResponse); i { + switch v := v.(*GraphqlIntrospectRequest); i { case 0: return &v.state case 1: @@ -4799,7 +5121,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataStoreConnectionTestSteps); i { + switch v := v.(*GraphqlIntrospectResponse); i { case 0: return &v.state case 1: @@ -4811,7 +5133,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataStoreConnectionTestStep); i { + switch v := v.(*DataStoreConnectionTestRequest); i { case 0: return &v.state case 1: @@ -4823,7 +5145,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PollingRequest); i { + switch v := v.(*DataStoreConnectionTestResponse); i { case 0: return &v.state case 1: @@ -4835,7 +5157,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataStore); i { + switch v := v.(*DataStoreConnectionTestSteps); i { case 0: return &v.state case 1: @@ -4847,7 +5169,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JaegerConfig); i { + switch v := v.(*DataStoreConnectionTestStep); i { case 0: return &v.state case 1: @@ -4859,7 +5181,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TempoConfig); i { + switch v := v.(*PollingRequest); i { case 0: return &v.state case 1: @@ -4871,7 +5193,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ElasticConfig); i { + switch v := v.(*DataStore); i { case 0: return &v.state case 1: @@ -4883,7 +5205,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignalfxConfig); i { + switch v := v.(*JaegerConfig); i { case 0: return &v.state case 1: @@ -4895,7 +5217,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AwsXRayConfig); i { + switch v := v.(*TempoConfig); i { case 0: return &v.state case 1: @@ -4907,7 +5229,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AzureAppInsightsConfig); i { + switch v := v.(*ElasticConfig); i { case 0: return &v.state case 1: @@ -4919,7 +5241,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SumoLogicConfig); i { + switch v := v.(*SignalfxConfig); i { case 0: return &v.state case 1: @@ -4931,7 +5253,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HttpClientSettings); i { + switch v := v.(*AwsXRayConfig); i { case 0: return &v.state case 1: @@ -4943,7 +5265,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GrpcClientSettings); i { + switch v := v.(*AzureAppInsightsConfig); i { case 0: return &v.state case 1: @@ -4955,7 +5277,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TLS); i { + switch v := v.(*SumoLogicConfig); i { case 0: return &v.state case 1: @@ -4967,7 +5289,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TLSSetting); i { + switch v := v.(*HttpClientSettings); i { case 0: return &v.state case 1: @@ -4979,7 +5301,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PollingResponse); i { + switch v := v.(*GrpcClientSettings); i { case 0: return &v.state case 1: @@ -4991,7 +5313,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Span); i { + switch v := v.(*TLS); i { case 0: return &v.state case 1: @@ -5003,7 +5325,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyValuePair); i { + switch v := v.(*TLSSetting); i { case 0: return &v.state case 1: @@ -5015,7 +5337,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KafkaRequest); i { + switch v := v.(*PollingResponse); i { case 0: return &v.state case 1: @@ -5027,7 +5349,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KafkaAuthentication); i { + switch v := v.(*Span); i { case 0: return &v.state case 1: @@ -5039,7 +5361,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KafkaPlainAuthentication); i { + switch v := v.(*KeyValuePair); i { case 0: return &v.state case 1: @@ -5051,7 +5373,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KafkaResponse); i { + switch v := v.(*KafkaRequest); i { case 0: return &v.state case 1: @@ -5063,7 +5385,7 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlaywrightEngineRequest); i { + switch v := v.(*KafkaAuthentication); i { case 0: return &v.state case 1: @@ -5075,6 +5397,42 @@ func file_proto_orchestrator_proto_init() { } } file_proto_orchestrator_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KafkaPlainAuthentication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_orchestrator_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KafkaResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_orchestrator_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlaywrightEngineRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_orchestrator_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PlaywrightEngineResponse); i { case 0: return &v.state @@ -5093,7 +5451,7 @@ func file_proto_orchestrator_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_proto_orchestrator_proto_rawDesc, NumEnums: 0, - NumMessages: 64, + NumMessages: 69, NumExtensions: 0, NumServices: 1, }, diff --git a/agent/proto/orchestrator.proto b/agent/proto/orchestrator.proto index f7c7596dad..4648b69df0 100644 --- a/agent/proto/orchestrator.proto +++ b/agent/proto/orchestrator.proto @@ -43,6 +43,12 @@ service Orchestrator { // Sends datastore connection test result back to the server rpc SendDataStoreConnectionTestResult(DataStoreConnectionTestResponse) returns (Empty) {} + + // Register an agent to listen for graphql introspect commands + rpc RegisterGraphqlIntrospectListener(AgentIdentification) returns (stream GraphqlIntrospectRequest) {} + + // Send the graphql introspect response schema + rpc SendGraphqlIntrospectResult(GraphqlIntrospectResponse) returns (Empty) {} } // Empty message for endpoints that don't return anything @@ -108,6 +114,7 @@ message Trigger { TraceIDRequest traceID = 4; KafkaRequest kafka = 5; PlaywrightEngineRequest playwrightEngine = 6; + GraphqlRequest graphql = 7; } message HttpRequest { @@ -119,6 +126,15 @@ message HttpRequest { bool SSLVerification = 6; } +message GraphqlRequest { + string url = 1; + string body = 2; + repeated HttpHeader headers = 3; + HttpAuthentication authentication = 4; + bool SSLVerification = 5; + string schema = 6; +} + message HttpHeader { string key = 1; string value = 2; @@ -182,6 +198,7 @@ message TriggerResult { KafkaResponse kafka = 5; Error error = 6; PlaywrightEngineResponse playwrightEngine = 7; + HttpResponse graphql = 8; } message HttpResponse { @@ -221,6 +238,19 @@ message OTLPConnectionTestResponse { map metadata = 5; } +message GraphqlIntrospectRequest { + string requestID = 1; + GraphqlRequest graphql = 2; + map metadata = 3; +} + +message GraphqlIntrospectResponse { + string requestID = 1; + HttpResponse response = 2; + AgentIdentification agentIdentification = 3; + map metadata = 4; +} + message DataStoreConnectionTestRequest { string requestID = 1; DataStore datastore = 2; diff --git a/agent/proto/orchestrator_grpc.pb.go b/agent/proto/orchestrator_grpc.pb.go index 265cc90fa6..7146923d7d 100644 --- a/agent/proto/orchestrator_grpc.pb.go +++ b/agent/proto/orchestrator_grpc.pb.go @@ -48,6 +48,10 @@ type OrchestratorClient interface { RegisterDataStoreConnectionTestAgent(ctx context.Context, in *AgentIdentification, opts ...grpc.CallOption) (Orchestrator_RegisterDataStoreConnectionTestAgentClient, error) // Sends datastore connection test result back to the server SendDataStoreConnectionTestResult(ctx context.Context, in *DataStoreConnectionTestResponse, opts ...grpc.CallOption) (*Empty, error) + // Register an agent to listen for graphql introspect commands + RegisterGraphqlIntrospectListener(ctx context.Context, in *AgentIdentification, opts ...grpc.CallOption) (Orchestrator_RegisterGraphqlIntrospectListenerClient, error) + // Send the graphql introspect response schema + SendGraphqlIntrospectResult(ctx context.Context, in *GraphqlIntrospectResponse, opts ...grpc.CallOption) (*Empty, error) } type orchestratorClient struct { @@ -304,6 +308,47 @@ func (c *orchestratorClient) SendDataStoreConnectionTestResult(ctx context.Conte return out, nil } +func (c *orchestratorClient) RegisterGraphqlIntrospectListener(ctx context.Context, in *AgentIdentification, opts ...grpc.CallOption) (Orchestrator_RegisterGraphqlIntrospectListenerClient, error) { + stream, err := c.cc.NewStream(ctx, &Orchestrator_ServiceDesc.Streams[6], "/proto.Orchestrator/RegisterGraphqlIntrospectListener", opts...) + if err != nil { + return nil, err + } + x := &orchestratorRegisterGraphqlIntrospectListenerClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Orchestrator_RegisterGraphqlIntrospectListenerClient interface { + Recv() (*GraphqlIntrospectRequest, error) + grpc.ClientStream +} + +type orchestratorRegisterGraphqlIntrospectListenerClient struct { + grpc.ClientStream +} + +func (x *orchestratorRegisterGraphqlIntrospectListenerClient) Recv() (*GraphqlIntrospectRequest, error) { + m := new(GraphqlIntrospectRequest) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *orchestratorClient) SendGraphqlIntrospectResult(ctx context.Context, in *GraphqlIntrospectResponse, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := c.cc.Invoke(ctx, "/proto.Orchestrator/SendGraphqlIntrospectResult", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OrchestratorServer is the server API for Orchestrator service. // All implementations must embed UnimplementedOrchestratorServer // for forward compatibility @@ -334,6 +379,10 @@ type OrchestratorServer interface { RegisterDataStoreConnectionTestAgent(*AgentIdentification, Orchestrator_RegisterDataStoreConnectionTestAgentServer) error // Sends datastore connection test result back to the server SendDataStoreConnectionTestResult(context.Context, *DataStoreConnectionTestResponse) (*Empty, error) + // Register an agent to listen for graphql introspect commands + RegisterGraphqlIntrospectListener(*AgentIdentification, Orchestrator_RegisterGraphqlIntrospectListenerServer) error + // Send the graphql introspect response schema + SendGraphqlIntrospectResult(context.Context, *GraphqlIntrospectResponse) (*Empty, error) mustEmbedUnimplementedOrchestratorServer() } @@ -377,6 +426,12 @@ func (UnimplementedOrchestratorServer) RegisterDataStoreConnectionTestAgent(*Age func (UnimplementedOrchestratorServer) SendDataStoreConnectionTestResult(context.Context, *DataStoreConnectionTestResponse) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SendDataStoreConnectionTestResult not implemented") } +func (UnimplementedOrchestratorServer) RegisterGraphqlIntrospectListener(*AgentIdentification, Orchestrator_RegisterGraphqlIntrospectListenerServer) error { + return status.Errorf(codes.Unimplemented, "method RegisterGraphqlIntrospectListener not implemented") +} +func (UnimplementedOrchestratorServer) SendGraphqlIntrospectResult(context.Context, *GraphqlIntrospectResponse) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SendGraphqlIntrospectResult not implemented") +} func (UnimplementedOrchestratorServer) mustEmbedUnimplementedOrchestratorServer() {} // UnsafeOrchestratorServer may be embedded to opt out of forward compatibility for this service. @@ -624,6 +679,45 @@ func _Orchestrator_SendDataStoreConnectionTestResult_Handler(srv interface{}, ct return interceptor(ctx, in, info, handler) } +func _Orchestrator_RegisterGraphqlIntrospectListener_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(AgentIdentification) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(OrchestratorServer).RegisterGraphqlIntrospectListener(m, &orchestratorRegisterGraphqlIntrospectListenerServer{stream}) +} + +type Orchestrator_RegisterGraphqlIntrospectListenerServer interface { + Send(*GraphqlIntrospectRequest) error + grpc.ServerStream +} + +type orchestratorRegisterGraphqlIntrospectListenerServer struct { + grpc.ServerStream +} + +func (x *orchestratorRegisterGraphqlIntrospectListenerServer) Send(m *GraphqlIntrospectRequest) error { + return x.ServerStream.SendMsg(m) +} + +func _Orchestrator_SendGraphqlIntrospectResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GraphqlIntrospectResponse) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OrchestratorServer).SendGraphqlIntrospectResult(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.Orchestrator/SendGraphqlIntrospectResult", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OrchestratorServer).SendGraphqlIntrospectResult(ctx, req.(*GraphqlIntrospectResponse)) + } + return interceptor(ctx, in, info, handler) +} + // Orchestrator_ServiceDesc is the grpc.ServiceDesc for Orchestrator service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -655,6 +749,10 @@ var Orchestrator_ServiceDesc = grpc.ServiceDesc{ MethodName: "SendDataStoreConnectionTestResult", Handler: _Orchestrator_SendDataStoreConnectionTestResult_Handler, }, + { + MethodName: "SendGraphqlIntrospectResult", + Handler: _Orchestrator_SendGraphqlIntrospectResult_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -687,6 +785,11 @@ var Orchestrator_ServiceDesc = grpc.ServiceDesc{ Handler: _Orchestrator_RegisterDataStoreConnectionTestAgent_Handler, ServerStreams: true, }, + { + StreamName: "RegisterGraphqlIntrospectListener", + Handler: _Orchestrator_RegisterGraphqlIntrospectListener_Handler, + ServerStreams: true, + }, }, Metadata: "proto/orchestrator.proto", } diff --git a/agent/runner/session.go b/agent/runner/session.go index a24fa70a71..6f49812006 100644 --- a/agent/runner/session.go +++ b/agent/runner/session.go @@ -177,10 +177,18 @@ func newControlPlaneClient(ctx context.Context, config config.Config, traceCache workers.WithTestConnectionMeter(meter), ) + graphqlIntrospectionWorker := workers.NewGraphqlIntrospectWorker( + controlPlaneClient, + workers.WithGraphqlIntrospectLogger(logger), + workers.WithGraphqlIntrospectTracer(tracer), + workers.WithGraphqlIntrospectMeter(meter), + ) + controlPlaneClient.OnDataStoreTestConnectionRequest(dataStoreTestConnectionWorker.Test) controlPlaneClient.OnStopRequest(stopWorker.Stop) controlPlaneClient.OnTriggerRequest(triggerWorker.Trigger) controlPlaneClient.OnPollingRequest(pollingWorker.Poll) + controlPlaneClient.OnGraphqlIntrospectionRequest(graphqlIntrospectionWorker.Introspect) controlPlaneClient.OnConnectionClosed(func(ctx context.Context, sr *proto.ShutdownRequest) error { logger.Info(fmt.Sprintf("Server terminated the connection with the agent. Reason: %s\n", sr.Reason)) return controlPlaneClient.Close() diff --git a/agent/workers/graphql_introspect.go b/agent/workers/graphql_introspect.go new file mode 100644 index 0000000000..9c184ab134 --- /dev/null +++ b/agent/workers/graphql_introspect.go @@ -0,0 +1,234 @@ +package workers + +import ( + "context" + "encoding/json" + "strings" + + "github.com/kubeshop/tracetest/agent/client" + "github.com/kubeshop/tracetest/agent/proto" + "github.com/kubeshop/tracetest/agent/telemetry" + "github.com/kubeshop/tracetest/agent/workers/trigger" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" + "go.uber.org/zap" +) + +type GraphqlIntrospectWorker struct { + client *client.Client + logger *zap.Logger + tracer trace.Tracer + meter metric.Meter + graphqlTrigger trigger.Triggerer +} + +type GraphqlIntrospectOption func(*GraphqlIntrospectWorker) + +func WithGraphqlIntrospectLogger(logger *zap.Logger) GraphqlIntrospectOption { + return func(w *GraphqlIntrospectWorker) { + w.logger = logger + } +} + +func WithGraphqlIntrospectTrigger(trigger trigger.Triggerer) GraphqlIntrospectOption { + return func(w *GraphqlIntrospectWorker) { + w.graphqlTrigger = trigger + } +} + +func WithGraphqlIntrospectTracer(tracer trace.Tracer) GraphqlIntrospectOption { + return func(w *GraphqlIntrospectWorker) { + w.tracer = tracer + } +} + +func WithGraphqlIntrospectMeter(meter metric.Meter) GraphqlIntrospectOption { + return func(w *GraphqlIntrospectWorker) { + w.meter = meter + } +} + +func NewGraphqlIntrospectWorker(client *client.Client, opts ...GraphqlIntrospectOption) *GraphqlIntrospectWorker { + worker := &GraphqlIntrospectWorker{ + client: client, + tracer: telemetry.GetNoopTracer(), + logger: zap.NewNop(), + meter: telemetry.GetNoopMeter(), + } + + for _, opt := range opts { + opt(worker) + } + + return worker +} + +func (w *GraphqlIntrospectWorker) Introspect(ctx context.Context, r *proto.GraphqlIntrospectRequest) error { + ctx, span := w.tracer.Start(ctx, "TestConnectionRequest Worker operation") + defer span.End() + + request := mapProtoToGraphqlRequest(r) + + response, err := w.graphqlTrigger.Trigger(ctx, request, nil) + if err != nil { + w.logger.Error("Could not send graphql introspection request", zap.Error(err)) + span.RecordError(err) + return err + } + + w.logger.Debug("Sending graphql introspection result", zap.Any("response", response)) + err = w.client.SendGraphqlIntrospectionResult(ctx, mapGraphqlToProtoResponse(response.Result.Graphql)) + if err != nil { + w.logger.Error("Could not send graphql introspection result", zap.Error(err)) + span.RecordError(err) + } else { + w.logger.Debug("Sent graphql introspection result") + } + + return nil +} + +func mapProtoToGraphqlRequest(r *proto.GraphqlIntrospectRequest) trigger.Trigger { + headers := make([]trigger.HTTPHeader, 0) + for _, header := range r.Graphql.Headers { + headers = append(headers, trigger.HTTPHeader{ + Key: header.Key, + Value: header.Value, + }) + } + + request := &trigger.GraphqlRequest{ + URL: r.Graphql.Url, + SSLVerification: r.Graphql.SSLVerification, + Headers: headers, + } + + body := GraphQLBody{ + Query: IntrospectionQuery, + } + + json, _ := json.Marshal(body) + request.Body = string(json) + + return trigger.Trigger{ + Type: trigger.TriggerTypeGraphql, + Graphql: request, + } +} + +type GraphQLBody struct { + Query string `json:"query"` +} + +func mapGraphqlToProtoResponse(r *trigger.GraphqlResponse) *proto.GraphqlIntrospectResponse { + headers := make([]*proto.HttpHeader, 0) + for _, header := range r.Headers { + headers = append(headers, &proto.HttpHeader{ + Key: header.Key, + Value: header.Value, + }) + } + + return &proto.GraphqlIntrospectResponse{ + Response: &proto.HttpResponse{ + StatusCode: int32(r.StatusCode), + Status: r.Status, + Headers: headers, + Body: []byte(r.Body), + }, + } +} + +var IntrospectionQuery = strings.ReplaceAll(` + query IntrospectionQuery { + __schema { + queryType { name } + mutationType { name } + subscriptionType { name } + types { + ...FullType + } + directives { + name + description + locations + args { + ...InputValue + } + } + } + } + + fragment FullType on __Type { + kind + name + description + fields(includeDeprecated: true) { + name + description + args { + ...InputValue + } + type { + ...TypeRef + } + isDeprecated + deprecationReason + } + inputFields { + ...InputValue + } + interfaces { + ...TypeRef + } + enumValues(includeDeprecated: true) { + name + description + isDeprecated + deprecationReason + } + possibleTypes { + ...TypeRef + } + } + + fragment InputValue on __InputValue { + name + description + type { ...TypeRef } + defaultValue + } + + fragment TypeRef on __Type { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + ofType { + kind + name + } + } + } + } + } + } + } + } +`, "\n", "") diff --git a/agent/workers/graphql_introspect_test.go b/agent/workers/graphql_introspect_test.go new file mode 100644 index 0000000000..36575b0c37 --- /dev/null +++ b/agent/workers/graphql_introspect_test.go @@ -0,0 +1,68 @@ +package workers_test + +import ( + "context" + "testing" + "time" + + "github.com/kubeshop/tracetest/agent/client" + "github.com/kubeshop/tracetest/agent/client/mocks" + "github.com/kubeshop/tracetest/agent/proto" + "github.com/kubeshop/tracetest/agent/workers" + "github.com/kubeshop/tracetest/agent/workers/trigger" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type mockGraphqlTrigger struct{} + +func (m mockGraphqlTrigger) Trigger(ctx context.Context, triggerConfig trigger.Trigger, opts *trigger.Options) (trigger.Response, error) { + return trigger.Response{ + Result: trigger.TriggerResult{ + Type: trigger.TriggerTypeGraphql, + Graphql: &trigger.GraphqlResponse{ + StatusCode: 200, + }, + }, + }, nil +} + +func (m mockGraphqlTrigger) Type() trigger.TriggerType { + return trigger.TriggerTypeGraphql +} + +func TestGraphqlIntrospectionWorker(t *testing.T) { + ctx := ContextWithTracingEnabled() + controlPlane := mocks.NewGrpcServer() + + client, err := client.Connect(ctx, controlPlane.Addr(), client.WithInsecure()) + require.NoError(t, err) + + worker := workers.NewGraphqlIntrospectWorker(client, workers.WithGraphqlIntrospectTrigger(mockGraphqlTrigger{})) + + client.OnGraphqlIntrospectionRequest(func(ctx context.Context, pr *proto.GraphqlIntrospectRequest) error { + return worker.Introspect(ctx, pr) + }) + + err = client.Start(ctx) + require.NoError(t, err) + + request := &proto.GraphqlIntrospectRequest{ + RequestID: "test", + Graphql: &proto.GraphqlRequest{ + Url: "https://swapi-graphql.netlify.app/.netlify/functions/index", + Headers: []*proto.HttpHeader{ + {Key: "Content-Type", Value: "application/json"}, + }, + }, + } + + controlPlane.SendGraphqlIntrospectionRequest(ctx, request) + time.Sleep(1 * time.Second) + + resp := controlPlane.GetLastGraphqlIntrospectionResponse() + require.NotNil(t, resp, "agent did not send graphql introspection response back to server") + + assert.Equal(t, resp.Data.Response.StatusCode, int32(200)) + +} diff --git a/agent/workers/trigger.go b/agent/workers/trigger.go index 6e0b3b6302..94c42ca56d 100644 --- a/agent/workers/trigger.go +++ b/agent/workers/trigger.go @@ -89,12 +89,14 @@ func NewTriggerWorker(client *client.Client, opts ...TriggerOption) *TriggerWork opt(worker) } + http := trigger.HTTP() registry := trigger.NewRegistry(worker.tracer) - registry.Add(trigger.HTTP()) + registry.Add(http) registry.Add(trigger.GRPC()) registry.Add(trigger.TRACEID()) registry.Add(trigger.KAFKA()) registry.Add(trigger.PLAYWRIGHTENGINE()) + registry.Add(trigger.GRAPHQL(http)) // Assign registry into worker worker.registry = registry @@ -214,6 +216,7 @@ func convertProtoToTrigger(pt *proto.Trigger) trigger.Trigger { TraceID: convertProtoTraceIDTriggerToTraceIDTrigger(pt.TraceID), Kafka: convertProtoKafkaTriggerToKafkaTrigger(pt.Kafka), PlaywrightEngine: convertProtoPlaywrightEngineTriggerToPlaywrightEngineTrigger(pt.PlaywrightEngine), + Graphql: convertProtoGraphqlTriggerToGraphqlTrigger(pt.Graphql), } } @@ -321,6 +324,24 @@ func convertProtoPlaywrightEngineTriggerToPlaywrightEngineTrigger(playwrightEngi } } +func convertProtoGraphqlTriggerToGraphqlTrigger(graphqlRequest *proto.GraphqlRequest) *trigger.GraphqlRequest { + if graphqlRequest == nil { + return nil + } + + headers := make([]trigger.HTTPHeader, 0, len(graphqlRequest.Headers)) + for _, header := range graphqlRequest.Headers { + headers = append(headers, trigger.HTTPHeader{Key: header.Key, Value: header.Value}) + } + + return &trigger.GraphqlRequest{ + URL: graphqlRequest.Url, + Headers: headers, + Body: graphqlRequest.Body, + SSLVerification: graphqlRequest.SSLVerification, + } +} + func convertProtoKafkaTriggerToKafkaTrigger(kafkaRequest *proto.KafkaRequest) *trigger.KafkaRequest { if kafkaRequest == nil { return nil @@ -368,6 +389,7 @@ func convertResponseToProtoResponse(request *proto.TriggerRequest, response trig TraceID: convertTraceIDResponseToProto(response.Result.TraceID), Kafka: convertKafkaResponseToProto(response.Result.Kafka), PlaywrightEngine: convertPlaywrightEngineResponseToProto(response.Result.PlaywrightEngine), + Graphql: convertGraphqlResponseToProto(response.Result.Graphql), }, } } @@ -438,3 +460,21 @@ func convertPlaywrightEngineResponseToProto(playwerightEngine *trigger.Playwrigh Out: playwerightEngine.Out, } } + +func convertGraphqlResponseToProto(graphql *trigger.GraphqlResponse) *proto.HttpResponse { + if graphql == nil { + return nil + } + + headers := make([]*proto.HttpHeader, 0, len(graphql.Headers)) + for _, header := range graphql.Headers { + headers = append(headers, &proto.HttpHeader{Key: header.Key, Value: header.Value}) + } + + return &proto.HttpResponse{ + StatusCode: int32(graphql.StatusCode), + Status: graphql.Status, + Headers: headers, + Body: []byte(graphql.Body), + } +} diff --git a/agent/workers/trigger/graphql.go b/agent/workers/trigger/graphql.go new file mode 100644 index 0000000000..15a5ff124c --- /dev/null +++ b/agent/workers/trigger/graphql.go @@ -0,0 +1,87 @@ +package trigger + +import ( + "context" + "fmt" +) + +func GRAPHQL(httpTriggerer Triggerer) Triggerer { + return &graphqlTriggerer{httpTriggerer} +} + +type graphqlTriggerer struct { + httpTriggerer Triggerer +} + +func (te *graphqlTriggerer) Trigger(ctx context.Context, triggerConfig Trigger, opts *Options) (Response, error) { + response := Response{ + Result: TriggerResult{ + Type: te.Type(), + }, + } + + if triggerConfig.Type != TriggerTypeGraphql { + return response, fmt.Errorf(`trigger type "%s" not supported by HTTP triggerer`, triggerConfig.Type) + } + + triggerConfig = mapGraphqlToHttp(triggerConfig) + + response, err := te.httpTriggerer.Trigger(ctx, triggerConfig, opts) + if err != nil { + return response, fmt.Errorf("error triggering Graphql trigger: %w", err) + } + + return mapHttpToGraphql(response), nil +} + +func (t *graphqlTriggerer) Type() TriggerType { + return TriggerTypeGraphql +} + +const TriggerTypeGraphql TriggerType = "graphql" + +func mapGraphqlToHttp(triggerConfig Trigger) Trigger { + return Trigger{ + Type: TriggerTypeHTTP, + HTTP: &HTTPRequest{ + URL: triggerConfig.Graphql.URL, + Method: HTTPMethodPOST, + Body: triggerConfig.Graphql.Body, + Headers: triggerConfig.Graphql.Headers, + SSLVerification: triggerConfig.Graphql.SSLVerification, + }, + } +} + +func mapHttpToGraphql(response Response) Response { + return Response{ + TraceID: response.TraceID, + SpanID: response.SpanID, + SpanAttributes: response.SpanAttributes, + Result: TriggerResult{ + Type: TriggerTypeGraphql, + Graphql: &GraphqlResponse{ + Status: response.Result.HTTP.Status, + StatusCode: response.Result.HTTP.StatusCode, + Headers: response.Result.HTTP.Headers, + Body: response.Result.HTTP.Body, + }, + }, + } +} + +type GraphqlRequest struct { + URL string `expr_enabled:"true" json:"url,omitempty"` + Body string `expr_enabled:"true" json:"body,omitempty"` + Headers []HTTPHeader `json:"headers,omitempty"` + Auth *HTTPAuthenticator `json:"auth,omitempty"` + SSLVerification bool `json:"sslVerification,omitempty"` + Schema string `json:"schema,omitempty"` +} + +type GraphqlResponse struct { + Status string `json:"status,omitempty"` + StatusCode int `json:"statusCode,omitempty"` + Headers []HTTPHeader `json:"headers,omitempty"` + Body string `json:"body,omitempty"` +} diff --git a/agent/workers/trigger/graphql_test.go b/agent/workers/trigger/graphql_test.go new file mode 100644 index 0000000000..3e1421f3d1 --- /dev/null +++ b/agent/workers/trigger/graphql_test.go @@ -0,0 +1,58 @@ +package trigger_test + +import ( + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/kubeshop/tracetest/agent/workers/trigger" + triggerer "github.com/kubeshop/tracetest/agent/workers/trigger" + "github.com/stretchr/testify/assert" +) + +func TestGraphqlTrigger(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + t.Log(req.Header) + + tp, ok := req.Header["Traceparent"] + if !ok { + t.Fatalf("missing Traceparent header %#v", req.Header) + } + assert.Len(t, tp, 1) + + assert.Equal(t, "POST", req.Method) + assert.Equal(t, "Value1", req.Header.Get("Key1")) + + b, err := io.ReadAll(req.Body) + assert.NoError(t, err) + assert.Equal(t, `query { films { name } }`, string(b)) + + rw.Header().Add("Content-Type", "application/json") + rw.WriteHeader(200) + _, err = rw.Write([]byte(`{ "data": { "films": [{ "name": "A New Hope" }] } }`)) + assert.NoError(t, err) + })) + defer server.Close() + + triggerConfig := trigger.Trigger{ + Type: trigger.TriggerTypeGraphql, + Graphql: &trigger.GraphqlRequest{ + URL: server.URL, + Headers: []trigger.HTTPHeader{ + {Key: "Key1", Value: "Value1"}, + }, + Body: `query { films { name } }`, + }, + } + + httpTriggerer := triggerer.HTTP() + + ex := triggerer.GRAPHQL(httpTriggerer) + + resp, err := ex.Trigger(createContext(), triggerConfig, nil) + assert.NoError(t, err) + + assert.Equal(t, 200, resp.Result.Graphql.StatusCode) + assert.Equal(t, `{ "data": { "films": [{ "name": "A New Hope" }] } }`, resp.Result.Graphql.Body) +} diff --git a/agent/workers/trigger/trigger.go b/agent/workers/trigger/trigger.go index 65266b54ab..7513967ca9 100644 --- a/agent/workers/trigger/trigger.go +++ b/agent/workers/trigger/trigger.go @@ -23,6 +23,7 @@ type ( TraceID *TraceIDRequest `json:"traceid,omitempty"` Kafka *KafkaRequest `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineRequest `json:"playwrightEngine,omitempty"` + Graphql *GraphqlRequest `json:"graphql,omitempty"` } TriggerResult struct { @@ -32,6 +33,7 @@ type ( TraceID *TraceIDResponse `json:"traceid,omitempty"` Kafka *KafkaResponse `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineResponse `json:"playwrightEngine,omitempty"` + Graphql *GraphqlResponse `json:"graphql,omitempty"` Error *TriggerError `json:"error,omitempty"` } diff --git a/agent/workers/trigger/trigger_json.go b/agent/workers/trigger/trigger_json.go index 78b5048eee..813ad37618 100644 --- a/agent/workers/trigger/trigger_json.go +++ b/agent/workers/trigger/trigger_json.go @@ -14,6 +14,7 @@ type triggerJSONV3 struct { TraceID *TraceIDRequest `json:"traceid,omitempty"` Kafka *KafkaRequest `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineRequest `json:"playwrightEngine,omitempty"` + Graphql *GraphqlRequest `json:"graphql,omitempty"` } func (v3 triggerJSONV3) valid() bool { @@ -22,7 +23,7 @@ func (v3 triggerJSONV3) valid() bool { (v3.HTTP != nil || v3.GRPC != nil || v3.TraceID != nil || - v3.Kafka != nil) || v3.PlaywrightEngine != nil) || (v3.Type == TriggerTypeCypress || v3.Type == TriggerTypePlaywright || v3.Type == TriggerTypeArtillery || v3.Type == TriggerTypeK6) + v3.Kafka != nil) || v3.PlaywrightEngine != nil || v3.Graphql != nil) || (v3.Type == TriggerTypeCypress || v3.Type == TriggerTypePlaywright || v3.Type == TriggerTypeArtillery || v3.Type == TriggerTypeK6) } type triggerJSONV2 struct { @@ -122,11 +123,12 @@ type triggerResultV2 struct { TraceID *TraceIDResponse `json:"traceid,omitempty"` Kafka *KafkaResponse `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineResponse `json:"playwrightEngine,omitempty"` + Graphql *GraphqlResponse `json:"graphql,omitempty"` Error *TriggerError `json:"error,omitempty"` } func (tr *triggerResultV2) valid() bool { - return tr.HTTP != nil || tr.GRPC != nil || tr.TraceID != nil || tr.Kafka != nil || tr.PlaywrightEngine != nil || tr.Error != nil + return tr.HTTP != nil || tr.GRPC != nil || tr.TraceID != nil || tr.Kafka != nil || tr.PlaywrightEngine != nil || tr.Graphql != nil || tr.Error != nil } func (t *TriggerResult) UnmarshalJSON(data []byte) error { @@ -140,6 +142,7 @@ func (t *TriggerResult) UnmarshalJSON(data []byte) error { t.TraceID = v2.TraceID t.Kafka = v2.Kafka t.PlaywrightEngine = v2.PlaywrightEngine + t.Graphql = v2.Graphql t.Error = v2.Error return nil diff --git a/api/graphql.yaml b/api/graphql.yaml new file mode 100644 index 0000000000..3ef7b2a266 --- /dev/null +++ b/api/graphql.yaml @@ -0,0 +1,35 @@ +openapi: 3.0.0 +components: + schemas: + GraphqlRequest: + type: object + properties: + url: + type: string + headers: + type: array + items: + $ref: "./http.yaml#/components/schemas/HTTPHeader" + auth: + $ref: "./http.yaml#/components/schemas/HTTPAuth" + body: + type: string + sslVerification: + type: boolean + default: false + schema: + type: string + + GraphqlResponse: + type: object + properties: + status: + type: string + statusCode: + type: integer + headers: + type: array + items: + $ref: "./http.yaml#/components/schemas/HTTPHeader" + body: + type: string diff --git a/api/triggers.yaml b/api/triggers.yaml index 7fa3606ba7..956a94d3c3 100644 --- a/api/triggers.yaml +++ b/api/triggers.yaml @@ -17,6 +17,7 @@ components: "artillery", "k6", "playwrightengine", + "graphql", ] httpRequest: $ref: "./http.yaml#/components/schemas/HTTPRequest" @@ -27,7 +28,9 @@ components: kafka: $ref: "./kafka.yaml#/components/schemas/KafkaRequest" playwrightEngine: - $ref: "./playwrightengine.yaml#/components/schemas/PlaywrightEngineRequest" + $ref: "./playwrightEngine.yaml#/components/schemas/PlaywrightEngineRequest" + graphql: + $ref: "./graphql.yaml#/components/schemas/GraphqlRequest" TriggerResult: type: object @@ -44,6 +47,8 @@ components: "playwright", "artillery", "k6", + "playwrightengine", + "graphql", ] triggerResult: type: object @@ -57,7 +62,9 @@ components: kafka: $ref: "./kafka.yaml#/components/schemas/KafkaResponse" playwrightEngine: - $ref: "./playwrightengine.yaml#/components/schemas/PlaywrightEngineResponse" + $ref: "./playwrightEngine.yaml#/components/schemas/PlaywrightEngineResponse" + graphql: + $ref: "./graphql.yaml#/components/schemas/GraphqlResponse" error: $ref: "#/components/schemas/TriggerError" diff --git a/cli/openapi/model_graphql_request.go b/cli/openapi/model_graphql_request.go new file mode 100644 index 0000000000..10c5e79024 --- /dev/null +++ b/cli/openapi/model_graphql_request.go @@ -0,0 +1,308 @@ +/* +TraceTest + +OpenAPI definition for TraceTest endpoint and resources + +API version: 0.2.1 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package openapi + +import ( + "encoding/json" +) + +// checks if the GraphqlRequest type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &GraphqlRequest{} + +// GraphqlRequest struct for GraphqlRequest +type GraphqlRequest struct { + Url *string `json:"url,omitempty"` + Headers []HTTPHeader `json:"headers,omitempty"` + Auth *HTTPAuth `json:"auth,omitempty"` + Body *string `json:"body,omitempty"` + SslVerification *bool `json:"sslVerification,omitempty"` + Schema *string `json:"schema,omitempty"` +} + +// NewGraphqlRequest instantiates a new GraphqlRequest object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGraphqlRequest() *GraphqlRequest { + this := GraphqlRequest{} + var sslVerification bool = false + this.SslVerification = &sslVerification + return &this +} + +// NewGraphqlRequestWithDefaults instantiates a new GraphqlRequest object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGraphqlRequestWithDefaults() *GraphqlRequest { + this := GraphqlRequest{} + var sslVerification bool = false + this.SslVerification = &sslVerification + return &this +} + +// GetUrl returns the Url field value if set, zero value otherwise. +func (o *GraphqlRequest) GetUrl() string { + if o == nil || isNil(o.Url) { + var ret string + return ret + } + return *o.Url +} + +// GetUrlOk returns a tuple with the Url field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetUrlOk() (*string, bool) { + if o == nil || isNil(o.Url) { + return nil, false + } + return o.Url, true +} + +// HasUrl returns a boolean if a field has been set. +func (o *GraphqlRequest) HasUrl() bool { + if o != nil && !isNil(o.Url) { + return true + } + + return false +} + +// SetUrl gets a reference to the given string and assigns it to the Url field. +func (o *GraphqlRequest) SetUrl(v string) { + o.Url = &v +} + +// GetHeaders returns the Headers field value if set, zero value otherwise. +func (o *GraphqlRequest) GetHeaders() []HTTPHeader { + if o == nil || isNil(o.Headers) { + var ret []HTTPHeader + return ret + } + return o.Headers +} + +// GetHeadersOk returns a tuple with the Headers field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetHeadersOk() ([]HTTPHeader, bool) { + if o == nil || isNil(o.Headers) { + return nil, false + } + return o.Headers, true +} + +// HasHeaders returns a boolean if a field has been set. +func (o *GraphqlRequest) HasHeaders() bool { + if o != nil && !isNil(o.Headers) { + return true + } + + return false +} + +// SetHeaders gets a reference to the given []HTTPHeader and assigns it to the Headers field. +func (o *GraphqlRequest) SetHeaders(v []HTTPHeader) { + o.Headers = v +} + +// GetAuth returns the Auth field value if set, zero value otherwise. +func (o *GraphqlRequest) GetAuth() HTTPAuth { + if o == nil || isNil(o.Auth) { + var ret HTTPAuth + return ret + } + return *o.Auth +} + +// GetAuthOk returns a tuple with the Auth field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetAuthOk() (*HTTPAuth, bool) { + if o == nil || isNil(o.Auth) { + return nil, false + } + return o.Auth, true +} + +// HasAuth returns a boolean if a field has been set. +func (o *GraphqlRequest) HasAuth() bool { + if o != nil && !isNil(o.Auth) { + return true + } + + return false +} + +// SetAuth gets a reference to the given HTTPAuth and assigns it to the Auth field. +func (o *GraphqlRequest) SetAuth(v HTTPAuth) { + o.Auth = &v +} + +// GetBody returns the Body field value if set, zero value otherwise. +func (o *GraphqlRequest) GetBody() string { + if o == nil || isNil(o.Body) { + var ret string + return ret + } + return *o.Body +} + +// GetBodyOk returns a tuple with the Body field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetBodyOk() (*string, bool) { + if o == nil || isNil(o.Body) { + return nil, false + } + return o.Body, true +} + +// HasBody returns a boolean if a field has been set. +func (o *GraphqlRequest) HasBody() bool { + if o != nil && !isNil(o.Body) { + return true + } + + return false +} + +// SetBody gets a reference to the given string and assigns it to the Body field. +func (o *GraphqlRequest) SetBody(v string) { + o.Body = &v +} + +// GetSslVerification returns the SslVerification field value if set, zero value otherwise. +func (o *GraphqlRequest) GetSslVerification() bool { + if o == nil || isNil(o.SslVerification) { + var ret bool + return ret + } + return *o.SslVerification +} + +// GetSslVerificationOk returns a tuple with the SslVerification field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetSslVerificationOk() (*bool, bool) { + if o == nil || isNil(o.SslVerification) { + return nil, false + } + return o.SslVerification, true +} + +// HasSslVerification returns a boolean if a field has been set. +func (o *GraphqlRequest) HasSslVerification() bool { + if o != nil && !isNil(o.SslVerification) { + return true + } + + return false +} + +// SetSslVerification gets a reference to the given bool and assigns it to the SslVerification field. +func (o *GraphqlRequest) SetSslVerification(v bool) { + o.SslVerification = &v +} + +// GetSchema returns the Schema field value if set, zero value otherwise. +func (o *GraphqlRequest) GetSchema() string { + if o == nil || isNil(o.Schema) { + var ret string + return ret + } + return *o.Schema +} + +// GetSchemaOk returns a tuple with the Schema field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlRequest) GetSchemaOk() (*string, bool) { + if o == nil || isNil(o.Schema) { + return nil, false + } + return o.Schema, true +} + +// HasSchema returns a boolean if a field has been set. +func (o *GraphqlRequest) HasSchema() bool { + if o != nil && !isNil(o.Schema) { + return true + } + + return false +} + +// SetSchema gets a reference to the given string and assigns it to the Schema field. +func (o *GraphqlRequest) SetSchema(v string) { + o.Schema = &v +} + +func (o GraphqlRequest) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o GraphqlRequest) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !isNil(o.Url) { + toSerialize["url"] = o.Url + } + if !isNil(o.Headers) { + toSerialize["headers"] = o.Headers + } + if !isNil(o.Auth) { + toSerialize["auth"] = o.Auth + } + if !isNil(o.Body) { + toSerialize["body"] = o.Body + } + if !isNil(o.SslVerification) { + toSerialize["sslVerification"] = o.SslVerification + } + if !isNil(o.Schema) { + toSerialize["schema"] = o.Schema + } + return toSerialize, nil +} + +type NullableGraphqlRequest struct { + value *GraphqlRequest + isSet bool +} + +func (v NullableGraphqlRequest) Get() *GraphqlRequest { + return v.value +} + +func (v *NullableGraphqlRequest) Set(val *GraphqlRequest) { + v.value = val + v.isSet = true +} + +func (v NullableGraphqlRequest) IsSet() bool { + return v.isSet +} + +func (v *NullableGraphqlRequest) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGraphqlRequest(val *GraphqlRequest) *NullableGraphqlRequest { + return &NullableGraphqlRequest{value: val, isSet: true} +} + +func (v NullableGraphqlRequest) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGraphqlRequest) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/cli/openapi/model_graphql_response.go b/cli/openapi/model_graphql_response.go new file mode 100644 index 0000000000..e9b68bbdfb --- /dev/null +++ b/cli/openapi/model_graphql_response.go @@ -0,0 +1,232 @@ +/* +TraceTest + +OpenAPI definition for TraceTest endpoint and resources + +API version: 0.2.1 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package openapi + +import ( + "encoding/json" +) + +// checks if the GraphqlResponse type satisfies the MappedNullable interface at compile time +var _ MappedNullable = &GraphqlResponse{} + +// GraphqlResponse struct for GraphqlResponse +type GraphqlResponse struct { + Status *string `json:"status,omitempty"` + StatusCode *int32 `json:"statusCode,omitempty"` + Headers []HTTPHeader `json:"headers,omitempty"` + Body *string `json:"body,omitempty"` +} + +// NewGraphqlResponse instantiates a new GraphqlResponse object +// This constructor will assign default values to properties that have it defined, +// and makes sure properties required by API are set, but the set of arguments +// will change when the set of required properties is changed +func NewGraphqlResponse() *GraphqlResponse { + this := GraphqlResponse{} + return &this +} + +// NewGraphqlResponseWithDefaults instantiates a new GraphqlResponse object +// This constructor will only assign default values to properties that have it defined, +// but it doesn't guarantee that properties required by API are set +func NewGraphqlResponseWithDefaults() *GraphqlResponse { + this := GraphqlResponse{} + return &this +} + +// GetStatus returns the Status field value if set, zero value otherwise. +func (o *GraphqlResponse) GetStatus() string { + if o == nil || isNil(o.Status) { + var ret string + return ret + } + return *o.Status +} + +// GetStatusOk returns a tuple with the Status field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlResponse) GetStatusOk() (*string, bool) { + if o == nil || isNil(o.Status) { + return nil, false + } + return o.Status, true +} + +// HasStatus returns a boolean if a field has been set. +func (o *GraphqlResponse) HasStatus() bool { + if o != nil && !isNil(o.Status) { + return true + } + + return false +} + +// SetStatus gets a reference to the given string and assigns it to the Status field. +func (o *GraphqlResponse) SetStatus(v string) { + o.Status = &v +} + +// GetStatusCode returns the StatusCode field value if set, zero value otherwise. +func (o *GraphqlResponse) GetStatusCode() int32 { + if o == nil || isNil(o.StatusCode) { + var ret int32 + return ret + } + return *o.StatusCode +} + +// GetStatusCodeOk returns a tuple with the StatusCode field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlResponse) GetStatusCodeOk() (*int32, bool) { + if o == nil || isNil(o.StatusCode) { + return nil, false + } + return o.StatusCode, true +} + +// HasStatusCode returns a boolean if a field has been set. +func (o *GraphqlResponse) HasStatusCode() bool { + if o != nil && !isNil(o.StatusCode) { + return true + } + + return false +} + +// SetStatusCode gets a reference to the given int32 and assigns it to the StatusCode field. +func (o *GraphqlResponse) SetStatusCode(v int32) { + o.StatusCode = &v +} + +// GetHeaders returns the Headers field value if set, zero value otherwise. +func (o *GraphqlResponse) GetHeaders() []HTTPHeader { + if o == nil || isNil(o.Headers) { + var ret []HTTPHeader + return ret + } + return o.Headers +} + +// GetHeadersOk returns a tuple with the Headers field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlResponse) GetHeadersOk() ([]HTTPHeader, bool) { + if o == nil || isNil(o.Headers) { + return nil, false + } + return o.Headers, true +} + +// HasHeaders returns a boolean if a field has been set. +func (o *GraphqlResponse) HasHeaders() bool { + if o != nil && !isNil(o.Headers) { + return true + } + + return false +} + +// SetHeaders gets a reference to the given []HTTPHeader and assigns it to the Headers field. +func (o *GraphqlResponse) SetHeaders(v []HTTPHeader) { + o.Headers = v +} + +// GetBody returns the Body field value if set, zero value otherwise. +func (o *GraphqlResponse) GetBody() string { + if o == nil || isNil(o.Body) { + var ret string + return ret + } + return *o.Body +} + +// GetBodyOk returns a tuple with the Body field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *GraphqlResponse) GetBodyOk() (*string, bool) { + if o == nil || isNil(o.Body) { + return nil, false + } + return o.Body, true +} + +// HasBody returns a boolean if a field has been set. +func (o *GraphqlResponse) HasBody() bool { + if o != nil && !isNil(o.Body) { + return true + } + + return false +} + +// SetBody gets a reference to the given string and assigns it to the Body field. +func (o *GraphqlResponse) SetBody(v string) { + o.Body = &v +} + +func (o GraphqlResponse) MarshalJSON() ([]byte, error) { + toSerialize, err := o.ToMap() + if err != nil { + return []byte{}, err + } + return json.Marshal(toSerialize) +} + +func (o GraphqlResponse) ToMap() (map[string]interface{}, error) { + toSerialize := map[string]interface{}{} + if !isNil(o.Status) { + toSerialize["status"] = o.Status + } + if !isNil(o.StatusCode) { + toSerialize["statusCode"] = o.StatusCode + } + if !isNil(o.Headers) { + toSerialize["headers"] = o.Headers + } + if !isNil(o.Body) { + toSerialize["body"] = o.Body + } + return toSerialize, nil +} + +type NullableGraphqlResponse struct { + value *GraphqlResponse + isSet bool +} + +func (v NullableGraphqlResponse) Get() *GraphqlResponse { + return v.value +} + +func (v *NullableGraphqlResponse) Set(val *GraphqlResponse) { + v.value = val + v.isSet = true +} + +func (v NullableGraphqlResponse) IsSet() bool { + return v.isSet +} + +func (v *NullableGraphqlResponse) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableGraphqlResponse(val *GraphqlResponse) *NullableGraphqlResponse { + return &NullableGraphqlResponse{value: val, isSet: true} +} + +func (v NullableGraphqlResponse) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableGraphqlResponse) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/cli/openapi/model_trigger.go b/cli/openapi/model_trigger.go index 5def0a4d22..31af55a764 100644 --- a/cli/openapi/model_trigger.go +++ b/cli/openapi/model_trigger.go @@ -25,6 +25,7 @@ type Trigger struct { Traceid *TRACEIDRequest `json:"traceid,omitempty"` Kafka *KafkaRequest `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineRequest `json:"playwrightEngine,omitempty"` + Graphql *GraphqlRequest `json:"graphql,omitempty"` } // NewTrigger instantiates a new Trigger object @@ -236,6 +237,38 @@ func (o *Trigger) SetPlaywrightEngine(v PlaywrightEngineRequest) { o.PlaywrightEngine = &v } +// GetGraphql returns the Graphql field value if set, zero value otherwise. +func (o *Trigger) GetGraphql() GraphqlRequest { + if o == nil || isNil(o.Graphql) { + var ret GraphqlRequest + return ret + } + return *o.Graphql +} + +// GetGraphqlOk returns a tuple with the Graphql field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *Trigger) GetGraphqlOk() (*GraphqlRequest, bool) { + if o == nil || isNil(o.Graphql) { + return nil, false + } + return o.Graphql, true +} + +// HasGraphql returns a boolean if a field has been set. +func (o *Trigger) HasGraphql() bool { + if o != nil && !isNil(o.Graphql) { + return true + } + + return false +} + +// SetGraphql gets a reference to the given GraphqlRequest and assigns it to the Graphql field. +func (o *Trigger) SetGraphql(v GraphqlRequest) { + o.Graphql = &v +} + func (o Trigger) MarshalJSON() ([]byte, error) { toSerialize, err := o.ToMap() if err != nil { @@ -264,6 +297,9 @@ func (o Trigger) ToMap() (map[string]interface{}, error) { if !isNil(o.PlaywrightEngine) { toSerialize["playwrightEngine"] = o.PlaywrightEngine } + if !isNil(o.Graphql) { + toSerialize["graphql"] = o.Graphql + } return toSerialize, nil } diff --git a/cli/openapi/model_trigger_result_trigger_result.go b/cli/openapi/model_trigger_result_trigger_result.go index 0b67cd5f94..0e054e7c57 100644 --- a/cli/openapi/model_trigger_result_trigger_result.go +++ b/cli/openapi/model_trigger_result_trigger_result.go @@ -24,6 +24,7 @@ type TriggerResultTriggerResult struct { Traceid *TRACEIDResponse `json:"traceid,omitempty"` Kafka *KafkaResponse `json:"kafka,omitempty"` PlaywrightEngine *PlaywrightEngineResponse `json:"playwrightEngine,omitempty"` + Graphql *GraphqlResponse `json:"graphql,omitempty"` Error *TriggerError `json:"error,omitempty"` } @@ -204,6 +205,38 @@ func (o *TriggerResultTriggerResult) SetPlaywrightEngine(v PlaywrightEngineRespo o.PlaywrightEngine = &v } +// GetGraphql returns the Graphql field value if set, zero value otherwise. +func (o *TriggerResultTriggerResult) GetGraphql() GraphqlResponse { + if o == nil || isNil(o.Graphql) { + var ret GraphqlResponse + return ret + } + return *o.Graphql +} + +// GetGraphqlOk returns a tuple with the Graphql field value if set, nil otherwise +// and a boolean to check if the value has been set. +func (o *TriggerResultTriggerResult) GetGraphqlOk() (*GraphqlResponse, bool) { + if o == nil || isNil(o.Graphql) { + return nil, false + } + return o.Graphql, true +} + +// HasGraphql returns a boolean if a field has been set. +func (o *TriggerResultTriggerResult) HasGraphql() bool { + if o != nil && !isNil(o.Graphql) { + return true + } + + return false +} + +// SetGraphql gets a reference to the given GraphqlResponse and assigns it to the Graphql field. +func (o *TriggerResultTriggerResult) SetGraphql(v GraphqlResponse) { + o.Graphql = &v +} + // GetError returns the Error field value if set, zero value otherwise. func (o *TriggerResultTriggerResult) GetError() TriggerError { if o == nil || isNil(o.Error) { @@ -261,6 +294,9 @@ func (o TriggerResultTriggerResult) ToMap() (map[string]interface{}, error) { if !isNil(o.PlaywrightEngine) { toSerialize["playwrightEngine"] = o.PlaywrightEngine } + if !isNil(o.Graphql) { + toSerialize["graphql"] = o.Graphql + } if !isNil(o.Error) { toSerialize["error"] = o.Error }