diff --git a/dataproxy/service/dataproxy_service.go b/dataproxy/service/dataproxy_service.go index 12705704af..9e642e0d5b 100644 --- a/dataproxy/service/dataproxy_service.go +++ b/dataproxy/service/dataproxy_service.go @@ -13,6 +13,7 @@ import ( "connectrpc.com/connect" "github.com/flyteorg/stow" "github.com/samber/lo" + "golang.org/x/sync/errgroup" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" @@ -28,6 +29,8 @@ import ( "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task/taskconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/trigger" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/trigger/triggerconnect" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow/workflowconnect" ) type Service struct { @@ -37,15 +40,17 @@ type Service struct { dataStore *storage.DataStore taskClient taskconnect.TaskServiceClient triggerClient triggerconnect.TriggerServiceClient + runClient workflowconnect.RunServiceClient } // NewService creates a new DataProxyService instance. -func NewService(cfg config.DataProxyConfig, dataStore *storage.DataStore, taskClient taskconnect.TaskServiceClient, triggerClient triggerconnect.TriggerServiceClient) *Service { +func NewService(cfg config.DataProxyConfig, dataStore *storage.DataStore, taskClient taskconnect.TaskServiceClient, triggerClient triggerconnect.TriggerServiceClient, runClient workflowconnect.RunServiceClient) *Service { return &Service{ cfg: cfg, dataStore: dataStore, taskClient: taskClient, triggerClient: triggerClient, + runClient: runClient, } } @@ -327,6 +332,67 @@ func filterInputs(inputs *task.Inputs, ignoreVars []string) *task.Inputs { return &task.Inputs{Literals: filtered} } +// GetActionData gets input and output data for an action by calling RunService for URIs +// and reading the data from storage. +func (s *Service) GetActionData( + ctx context.Context, + req *connect.Request[dataproxy.GetActionDataRequest], +) (*connect.Response[dataproxy.GetActionDataResponse], error) { + actionId := req.Msg.GetActionId() + + urisResp, err := s.runClient.GetActionDataURIs(ctx, connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionId, + })) + if err != nil { + return nil, err + } + + resp := &dataproxy.GetActionDataResponse{ + Inputs: &task.Inputs{}, + Outputs: &task.Outputs{}, + } + + group, groupCtx := errgroup.WithContext(ctx) + + if urisResp.Msg.GetInputsUri() != "" { + group.Go(func() error { + baseRef := storage.DataReference(urisResp.Msg.GetInputsUri()) + inputRef, err := s.dataStore.ConstructReference(groupCtx, baseRef, "inputs.pb") + if err != nil { + return connect.NewError(connect.CodeInternal, fmt.Errorf("failed to construct input ref: %w", err)) + } + logger.Infof(groupCtx, "GetActionData: reading inputs from %s", inputRef) + if err := s.dataStore.ReadProtobuf(groupCtx, inputRef, resp.Inputs); err != nil { + logger.Errorf(groupCtx, "GetActionData: failed to read inputs from %s: %v", inputRef, err) + return connect.NewError(connect.CodeInternal, fmt.Errorf("failed to read inputs from %s: %w", inputRef, err)) + } + return nil + }) + } + + if urisResp.Msg.GetOutputsUri() != "" { + group.Go(func() error { + outputRef := storage.DataReference(urisResp.Msg.GetOutputsUri()) + logger.Infof(groupCtx, "GetActionData: reading outputs from %s", outputRef) + var inputsOrOutputs task.Inputs + if err := s.dataStore.ReadProtobuf(groupCtx, outputRef, &inputsOrOutputs); err != nil { + logger.Errorf(groupCtx, "GetActionData: failed to read outputs from %s: %v", outputRef, err) + return connect.NewError(connect.CodeInternal, fmt.Errorf("failed to read outputs from %s: %w", outputRef, err)) + } + resp.Outputs = &task.Outputs{ + Literals: inputsOrOutputs.GetLiterals(), + } + return nil + }) + } + + if err := group.Wait(); err != nil { + return nil, err + } + + return connect.NewResponse(resp), nil +} + // hashInputsProto computes a deterministic FNV-64a hash of the serialized inputs. func hashInputsProto(inputs proto.Message) (string, error) { marshaller := proto.MarshalOptions{Deterministic: true} diff --git a/dataproxy/service/dataproxy_service_test.go b/dataproxy/service/dataproxy_service_test.go index f2661e5db2..a792227c4d 100644 --- a/dataproxy/service/dataproxy_service_test.go +++ b/dataproxy/service/dataproxy_service_test.go @@ -10,6 +10,7 @@ import ( "connectrpc.com/connect" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/durationpb" "k8s.io/apimachinery/pkg/api/resource" @@ -21,6 +22,8 @@ import ( "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/core" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow" + workflowMocks "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow/workflowconnect/mocks" ) func TestCreateUploadLocation(t *testing.T) { @@ -97,7 +100,7 @@ func TestCreateUploadLocation(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStore(t) - service := NewService(cfg, mockStore, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil) req := &connect.Request[dataproxy.CreateUploadLocationRequest]{ Msg: tt.req, @@ -218,7 +221,7 @@ func TestCheckFileExists(t *testing.T) { mockStore = setupMockDataStoreWithExistingFile(t, tt.existingFileMD5) } - service := NewService(cfg, mockStore, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil) storagePath := storage.DataReference("s3://test-bucket/uploads/test-project/test-domain/test-root/test-file.txt") err := service.checkFileExists(ctx, storagePath, tt.req) @@ -296,7 +299,7 @@ func TestConstructStoragePath(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStore(t) - service := NewService(cfg, mockStore, nil, nil) + service := NewService(cfg, mockStore, nil, nil, nil) path, err := service.constructStoragePath(ctx, tt.req) @@ -389,7 +392,7 @@ func TestUploadInputs(t *testing.T) { Name: "test-run", }, }, - Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpec}, + Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpec}, Inputs: &task.Inputs{ Literals: []*task.NamedLiteral{ {Name: "x", Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_Integer{Integer: 42}}}}}}}, @@ -414,7 +417,7 @@ func TestUploadInputs(t *testing.T) { Domain: "test-domain", }, }, - Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpec}, + Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpec}, Inputs: &task.Inputs{ Literals: []*task.NamedLiteral{ {Name: "y", Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_StringValue{StringValue: "hello"}}}}}}}, @@ -435,7 +438,7 @@ func TestUploadInputs(t *testing.T) { Org: "org", Project: "proj", Domain: "dom", Name: "run1", }, }, - Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpecWithIgnoredVars}, + Task: &dataproxy.UploadInputsRequest_TaskSpec{TaskSpec: testTaskSpecWithIgnoredVars}, Inputs: &task.Inputs{ Literals: []*task.NamedLiteral{ {Name: "x", Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_Integer{Integer: 1}}}}}}}, @@ -453,7 +456,7 @@ func TestUploadInputs(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { mockStore := setupMockDataStoreWithWriteProtobuf(t) - svc := NewService(cfg, mockStore, nil, nil) + svc := NewService(cfg, mockStore, nil, nil, nil) req := &connect.Request[dataproxy.UploadInputsRequest]{ Msg: tt.req, @@ -490,6 +493,162 @@ func setupMockDataStoreWithWriteProtobuf(t *testing.T) *storage.DataStore { } } +func TestGetActionData(t *testing.T) { + ctx := context.Background() + cfg := config.DataProxyConfig{} + + actionID := &common.ActionIdentifier{ + Name: "a0", + Run: &common.RunIdentifier{ + Org: "org", Project: "proj", Domain: "dom", Name: "run1", + }, + } + + storedInputs := &task.Inputs{ + Literals: []*task.NamedLiteral{ + {Name: "x", Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_Integer{Integer: 1}}}}}}}, + }, + } + storedOutputs := &task.Inputs{ + Literals: []*task.NamedLiteral{ + {Name: "o", Value: &core.Literal{Value: &core.Literal_Scalar{Scalar: &core.Scalar{Value: &core.Scalar_Primitive{Primitive: &core.Primitive{Value: &core.Primitive_StringValue{StringValue: "result"}}}}}}}, + }, + } + + tests := []struct { + name string + inputsURI string + outputsURI string + runClientErr error + readInputsErr error + readOutputsErr error + wantErr bool + expectInputsLen int + expectOutputsLen int + }{ + { + name: "success with both inputs and outputs", + inputsURI: "s3://test-bucket/inputs-dir", + outputsURI: "s3://test-bucket/outputs/outputs.pb", + expectInputsLen: 1, + expectOutputsLen: 1, + }, + { + name: "success with only inputs", + inputsURI: "s3://test-bucket/inputs-dir", + outputsURI: "", + expectInputsLen: 1, + expectOutputsLen: 0, + }, + { + name: "success with only outputs", + inputsURI: "", + outputsURI: "s3://test-bucket/outputs/outputs.pb", + expectInputsLen: 0, + expectOutputsLen: 1, + }, + { + name: "success with neither inputs nor outputs", + inputsURI: "", + outputsURI: "", + expectInputsLen: 0, + expectOutputsLen: 0, + }, + { + name: "RunService error propagates", + runClientErr: connect.NewError(connect.CodeNotFound, assertErr("not found")), + wantErr: true, + }, + { + name: "read inputs error propagates", + inputsURI: "s3://test-bucket/inputs-dir", + readInputsErr: assertErr("read failed"), + wantErr: true, + }, + { + name: "read outputs error propagates", + outputsURI: "s3://test-bucket/outputs/outputs.pb", + readOutputsErr: assertErr("read failed"), + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + runClient := workflowMocks.NewRunServiceClient(t) + if tt.runClientErr != nil { + runClient.EXPECT().GetActionDataURIs(mock.Anything, mock.Anything).Return(nil, tt.runClientErr) + } else { + runClient.EXPECT().GetActionDataURIs(mock.Anything, mock.Anything).Return( + connect.NewResponse(&workflow.GetActionDataURIsResponse{ + InputsUri: tt.inputsURI, + OutputsUri: tt.outputsURI, + }), nil) + } + + mockComposedStore := storageMocks.NewComposedProtobufStore(t) + + if tt.inputsURI != "" { + expectedInputRef := storage.DataReference(tt.inputsURI + "/inputs.pb") + call := mockComposedStore.On("ReadProtobuf", mock.Anything, expectedInputRef, mock.Anything) + if tt.readInputsErr != nil { + call.Return(tt.readInputsErr).Maybe() + } else { + call.Run(func(args mock.Arguments) { + msg := args.Get(2).(proto.Message) + proto.Reset(msg) + proto.Merge(msg, storedInputs) + }).Return(nil).Maybe() + } + } + + if tt.outputsURI != "" { + expectedOutputRef := storage.DataReference(tt.outputsURI) + call := mockComposedStore.On("ReadProtobuf", mock.Anything, expectedOutputRef, mock.Anything) + if tt.readOutputsErr != nil { + call.Return(tt.readOutputsErr).Maybe() + } else { + call.Run(func(args mock.Arguments) { + msg := args.Get(2).(proto.Message) + proto.Reset(msg) + proto.Merge(msg, storedOutputs) + }).Return(nil).Maybe() + } + } + + ds := &storage.DataStore{ + ComposedProtobufStore: mockComposedStore, + ReferenceConstructor: &simpleRefConstructor{}, + } + svc := NewService(cfg, ds, nil, nil, runClient) + + resp, err := svc.GetActionData(ctx, connect.NewRequest(&dataproxy.GetActionDataRequest{ + ActionId: actionID, + })) + + if tt.wantErr { + assert.Error(t, err) + assert.Nil(t, resp) + return + } + assert.NoError(t, err) + assert.NotNil(t, resp) + assert.Len(t, resp.Msg.GetInputs().GetLiterals(), tt.expectInputsLen) + assert.Len(t, resp.Msg.GetOutputs().GetLiterals(), tt.expectOutputsLen) + if tt.expectInputsLen > 0 { + assert.Equal(t, "x", resp.Msg.GetInputs().GetLiterals()[0].GetName()) + } + if tt.expectOutputsLen > 0 { + assert.Equal(t, "o", resp.Msg.GetOutputs().GetLiterals()[0].GetName()) + } + }) + } +} + +type assertErr string + +func (e assertErr) Error() string { return string(e) } + func setupMockDataStoreWithExistingFile(t *testing.T, contentMD5 string) *storage.DataStore { mockComposedStore := storageMocks.NewComposedProtobufStore(t) diff --git a/dataproxy/setup.go b/dataproxy/setup.go index 9f932bcd46..a079697fe8 100644 --- a/dataproxy/setup.go +++ b/dataproxy/setup.go @@ -5,13 +5,14 @@ import ( "fmt" "net/http" - "github.com/flyteorg/flyte/v2/flytestdlib/app" "github.com/flyteorg/flyte/v2/dataproxy/config" "github.com/flyteorg/flyte/v2/dataproxy/service" + "github.com/flyteorg/flyte/v2/flytestdlib/app" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/cluster/clusterconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy/dataproxyconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/task/taskconnect" "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/trigger/triggerconnect" + "github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow/workflowconnect" "github.com/flyteorg/flyte/v2/flytestdlib/logger" ) @@ -24,8 +25,9 @@ func Setup(ctx context.Context, sc *app.SetupContext) error { baseURL := sc.BaseURL taskClient := taskconnect.NewTaskServiceClient(http.DefaultClient, baseURL) triggerClient := triggerconnect.NewTriggerServiceClient(http.DefaultClient, baseURL) + runClient := workflowconnect.NewRunServiceClient(http.DefaultClient, baseURL) - svc := service.NewService(*cfg, sc.DataStore, taskClient, triggerClient) + svc := service.NewService(*cfg, sc.DataStore, taskClient, triggerClient, runClient) path, handler := dataproxyconnect.NewDataProxyServiceHandler(svc) sc.Mux.Handle(path, handler) diff --git a/flyteidl2/dataproxy/dataproxy_service.proto b/flyteidl2/dataproxy/dataproxy_service.proto index e8295be029..986bbcc847 100644 --- a/flyteidl2/dataproxy/dataproxy_service.proto +++ b/flyteidl2/dataproxy/dataproxy_service.proto @@ -40,6 +40,11 @@ service DataProxyService { }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {description: "Uploads inputs for a given run or project and returns a URI and cache key that can be used to reference these inputs at runtime."}; } + + // Get input and output data for an action. + rpc GetActionData(GetActionDataRequest) returns (GetActionDataResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + } } // CreateUploadLocationRequest specifies the request for the CreateUploadLocation API. @@ -140,3 +145,18 @@ message UploadInputsRequest { message UploadInputsResponse { common.OffloadedInputData offloaded_input_data = 1; } + +// Request message for querying action data. +message GetActionDataRequest { + // Action to query. + common.ActionIdentifier action_id = 1 [(buf.validate.field).required = true]; +} + +// Response message for querying action data. +message GetActionDataResponse { + // Inputs for the action. + task.Inputs inputs = 1; + + // Outputs for the action. + task.Outputs outputs = 2; +} diff --git a/flyteidl2/workflow/run_service.proto b/flyteidl2/workflow/run_service.proto index 6202543aea..82a8c3103f 100644 --- a/flyteidl2/workflow/run_service.proto +++ b/flyteidl2/workflow/run_service.proto @@ -38,8 +38,9 @@ service RunService { // Stream detailed information updates about an action. The call will terminate when the action reaches a terminal phase. rpc WatchActionDetails(WatchActionDetailsRequest) returns (stream WatchActionDetailsResponse) {} - // Get input and output for an action. + // Deprecated: Use DataProxyService.GetActionData instead. rpc GetActionData(GetActionDataRequest) returns (GetActionDataResponse) { + option deprecated = true; option idempotency_level = NO_SIDE_EFFECTS; } @@ -69,6 +70,11 @@ service RunService { // Stream updates for task groups based on the provided filter criteria. rpc WatchGroups(WatchGroupsRequest) returns (stream WatchGroupsResponse) {} + + // Get the storage URIs for an action's input and output data. + rpc GetActionDataURIs(GetActionDataURIsRequest) returns (GetActionDataURIsResponse) { + option idempotency_level = NO_SIDE_EFFECTS; + } } // Request message for creating a run. @@ -193,6 +199,21 @@ message GetActionDataResponse { task.Outputs outputs = 2; } +// Request message for getting action data URIs. +message GetActionDataURIsRequest { + // Action to query. + common.ActionIdentifier action_id = 1 [(buf.validate.field).required = true]; +} + +// Response message for getting action data URIs. +message GetActionDataURIsResponse { + // URI for the action's input data. + string inputs_uri = 1; + + // URI for the action's output data. Empty if action hasn't succeeded or has no outputs. + string outputs_uri = 2; +} + // Request message for listing runs. message ListRunsRequest { reserved 3, 5; // Deprecated diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go index d7c2a2d754..03c4203ca2 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.go @@ -445,6 +445,113 @@ func (x *UploadInputsResponse) GetOffloadedInputData() *common.OffloadedInputDat return nil } +// Request message for querying action data. +type GetActionDataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Action to query. + ActionId *common.ActionIdentifier `protobuf:"bytes,1,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"` +} + +func (x *GetActionDataRequest) Reset() { + *x = GetActionDataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionDataRequest) ProtoMessage() {} + +func (x *GetActionDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[4] + 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 GetActionDataRequest.ProtoReflect.Descriptor instead. +func (*GetActionDataRequest) Descriptor() ([]byte, []int) { + return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP(), []int{4} +} + +func (x *GetActionDataRequest) GetActionId() *common.ActionIdentifier { + if x != nil { + return x.ActionId + } + return nil +} + +// Response message for querying action data. +type GetActionDataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Inputs for the action. + Inputs *task.Inputs `protobuf:"bytes,1,opt,name=inputs,proto3" json:"inputs,omitempty"` + // Outputs for the action. + Outputs *task.Outputs `protobuf:"bytes,2,opt,name=outputs,proto3" json:"outputs,omitempty"` +} + +func (x *GetActionDataResponse) Reset() { + *x = GetActionDataResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionDataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionDataResponse) ProtoMessage() {} + +func (x *GetActionDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[5] + 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 GetActionDataResponse.ProtoReflect.Descriptor instead. +func (*GetActionDataResponse) Descriptor() ([]byte, []int) { + return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP(), []int{5} +} + +func (x *GetActionDataResponse) GetInputs() *task.Inputs { + if x != nil { + return x.Inputs + } + return nil +} + +func (x *GetActionDataResponse) GetOutputs() *task.Outputs { + if x != nil { + return x.Outputs + } + return nil +} + var File_flyteidl2_dataproxy_dataproxy_service_proto protoreflect.FileDescriptor var file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc = []byte{ @@ -546,60 +653,81 @@ var file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc = []byte{ 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x32, 0xeb, 0x04, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa0, 0x02, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, + 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, + 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, + 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x32, 0xd8, 0x05, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa0, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x92, 0x41, 0x4d, - 0x1a, 0x4b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, - 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x5a, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x22, - 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x12, - 0xb3, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcd, 0x01, 0x92, 0x41, 0x83, 0x01, 0x1a, 0x80, 0x01, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x72, - 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x55, 0x52, 0x49, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x5a, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x18, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0xd8, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, - 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, - 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x92, 0x41, 0x4d, 0x1a, 0x4b, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2d, 0x6f, + 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x61, + 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, + 0x3a, 0x01, 0x2a, 0x5a, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, + 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x22, 0x1e, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, + 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x12, 0xb3, 0x02, 0x0a, + 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x28, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xcd, 0x01, 0x92, 0x41, 0x83, 0x01, 0x1a, 0x80, 0x01, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x72, 0x20, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x73, 0x20, 0x61, 0x20, 0x55, 0x52, 0x49, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x5a, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, + 0xd8, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, + 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, + 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, + 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, + 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -614,43 +742,52 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescGZIP() []byte { return file_flyteidl2_dataproxy_dataproxy_service_proto_rawDescData } -var file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_flyteidl2_dataproxy_dataproxy_service_proto_goTypes = []interface{}{ (*CreateUploadLocationRequest)(nil), // 0: flyteidl2.dataproxy.CreateUploadLocationRequest (*CreateUploadLocationResponse)(nil), // 1: flyteidl2.dataproxy.CreateUploadLocationResponse (*UploadInputsRequest)(nil), // 2: flyteidl2.dataproxy.UploadInputsRequest (*UploadInputsResponse)(nil), // 3: flyteidl2.dataproxy.UploadInputsResponse - nil, // 4: flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry - (*durationpb.Duration)(nil), // 5: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp - (*common.RunIdentifier)(nil), // 7: flyteidl2.common.RunIdentifier - (*common.ProjectIdentifier)(nil), // 8: flyteidl2.common.ProjectIdentifier - (*task.TaskIdentifier)(nil), // 9: flyteidl2.task.TaskIdentifier - (*task.TaskSpec)(nil), // 10: flyteidl2.task.TaskSpec - (*common.TriggerName)(nil), // 11: flyteidl2.common.TriggerName - (*task.Inputs)(nil), // 12: flyteidl2.task.Inputs - (*common.OffloadedInputData)(nil), // 13: flyteidl2.common.OffloadedInputData + (*GetActionDataRequest)(nil), // 4: flyteidl2.dataproxy.GetActionDataRequest + (*GetActionDataResponse)(nil), // 5: flyteidl2.dataproxy.GetActionDataResponse + nil, // 6: flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry + (*durationpb.Duration)(nil), // 7: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp + (*common.RunIdentifier)(nil), // 9: flyteidl2.common.RunIdentifier + (*common.ProjectIdentifier)(nil), // 10: flyteidl2.common.ProjectIdentifier + (*task.TaskIdentifier)(nil), // 11: flyteidl2.task.TaskIdentifier + (*task.TaskSpec)(nil), // 12: flyteidl2.task.TaskSpec + (*common.TriggerName)(nil), // 13: flyteidl2.common.TriggerName + (*task.Inputs)(nil), // 14: flyteidl2.task.Inputs + (*common.OffloadedInputData)(nil), // 15: flyteidl2.common.OffloadedInputData + (*common.ActionIdentifier)(nil), // 16: flyteidl2.common.ActionIdentifier + (*task.Outputs)(nil), // 17: flyteidl2.task.Outputs } var file_flyteidl2_dataproxy_dataproxy_service_proto_depIdxs = []int32{ - 5, // 0: flyteidl2.dataproxy.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration - 6, // 1: flyteidl2.dataproxy.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp - 4, // 2: flyteidl2.dataproxy.CreateUploadLocationResponse.headers:type_name -> flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry - 7, // 3: flyteidl2.dataproxy.UploadInputsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 8, // 4: flyteidl2.dataproxy.UploadInputsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 9, // 5: flyteidl2.dataproxy.UploadInputsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 10, // 6: flyteidl2.dataproxy.UploadInputsRequest.task_spec:type_name -> flyteidl2.task.TaskSpec - 11, // 7: flyteidl2.dataproxy.UploadInputsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 12, // 8: flyteidl2.dataproxy.UploadInputsRequest.inputs:type_name -> flyteidl2.task.Inputs - 13, // 9: flyteidl2.dataproxy.UploadInputsResponse.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData - 0, // 10: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:input_type -> flyteidl2.dataproxy.CreateUploadLocationRequest - 2, // 11: flyteidl2.dataproxy.DataProxyService.UploadInputs:input_type -> flyteidl2.dataproxy.UploadInputsRequest - 1, // 12: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:output_type -> flyteidl2.dataproxy.CreateUploadLocationResponse - 3, // 13: flyteidl2.dataproxy.DataProxyService.UploadInputs:output_type -> flyteidl2.dataproxy.UploadInputsResponse - 12, // [12:14] is the sub-list for method output_type - 10, // [10:12] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 7, // 0: flyteidl2.dataproxy.CreateUploadLocationRequest.expires_in:type_name -> google.protobuf.Duration + 8, // 1: flyteidl2.dataproxy.CreateUploadLocationResponse.expires_at:type_name -> google.protobuf.Timestamp + 6, // 2: flyteidl2.dataproxy.CreateUploadLocationResponse.headers:type_name -> flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntry + 9, // 3: flyteidl2.dataproxy.UploadInputsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 10, // 4: flyteidl2.dataproxy.UploadInputsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 11, // 5: flyteidl2.dataproxy.UploadInputsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 12, // 6: flyteidl2.dataproxy.UploadInputsRequest.task_spec:type_name -> flyteidl2.task.TaskSpec + 13, // 7: flyteidl2.dataproxy.UploadInputsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 14, // 8: flyteidl2.dataproxy.UploadInputsRequest.inputs:type_name -> flyteidl2.task.Inputs + 15, // 9: flyteidl2.dataproxy.UploadInputsResponse.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData + 16, // 10: flyteidl2.dataproxy.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 14, // 11: flyteidl2.dataproxy.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs + 17, // 12: flyteidl2.dataproxy.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs + 0, // 13: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:input_type -> flyteidl2.dataproxy.CreateUploadLocationRequest + 2, // 14: flyteidl2.dataproxy.DataProxyService.UploadInputs:input_type -> flyteidl2.dataproxy.UploadInputsRequest + 4, // 15: flyteidl2.dataproxy.DataProxyService.GetActionData:input_type -> flyteidl2.dataproxy.GetActionDataRequest + 1, // 16: flyteidl2.dataproxy.DataProxyService.CreateUploadLocation:output_type -> flyteidl2.dataproxy.CreateUploadLocationResponse + 3, // 17: flyteidl2.dataproxy.DataProxyService.UploadInputs:output_type -> flyteidl2.dataproxy.UploadInputsResponse + 5, // 18: flyteidl2.dataproxy.DataProxyService.GetActionData:output_type -> flyteidl2.dataproxy.GetActionDataResponse + 16, // [16:19] is the sub-list for method output_type + 13, // [13:16] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name } func init() { file_flyteidl2_dataproxy_dataproxy_service_proto_init() } @@ -707,6 +844,30 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_init() { return nil } } + file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetActionDataRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetActionDataResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_flyteidl2_dataproxy_dataproxy_service_proto_msgTypes[2].OneofWrappers = []interface{}{ (*UploadInputsRequest_RunId)(nil), @@ -721,7 +882,7 @@ func file_flyteidl2_dataproxy_dataproxy_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl2_dataproxy_dataproxy_service_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 7, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go index a5b55726ad..3d74340491 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service.pb.validate.go @@ -796,3 +796,294 @@ var _ interface { Cause() error ErrorName() string } = UploadInputsResponseValidationError{} + +// Validate checks the field values on GetActionDataRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionDataRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionDataRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionDataRequestMultiError, or nil if none found. +func (m *GetActionDataRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionDataRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetActionId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionDataRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionDataRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetActionId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionDataRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return GetActionDataRequestMultiError(errors) + } + + return nil +} + +// GetActionDataRequestMultiError is an error wrapping multiple validation +// errors returned by GetActionDataRequest.ValidateAll() if the designated +// constraints aren't met. +type GetActionDataRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionDataRequestMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionDataRequestMultiError) AllErrors() []error { return m } + +// GetActionDataRequestValidationError is the validation error returned by +// GetActionDataRequest.Validate if the designated constraints aren't met. +type GetActionDataRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionDataRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionDataRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionDataRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionDataRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionDataRequestValidationError) ErrorName() string { + return "GetActionDataRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionDataRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionDataRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionDataRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionDataRequestValidationError{} + +// Validate checks the field values on GetActionDataResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionDataResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionDataResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionDataResponseMultiError, or nil if none found. +func (m *GetActionDataResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionDataResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetInputs()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionDataResponseValidationError{ + field: "Inputs", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionDataResponseValidationError{ + field: "Inputs", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInputs()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionDataResponseValidationError{ + field: "Inputs", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetOutputs()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionDataResponseValidationError{ + field: "Outputs", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionDataResponseValidationError{ + field: "Outputs", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOutputs()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionDataResponseValidationError{ + field: "Outputs", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return GetActionDataResponseMultiError(errors) + } + + return nil +} + +// GetActionDataResponseMultiError is an error wrapping multiple validation +// errors returned by GetActionDataResponse.ValidateAll() if the designated +// constraints aren't met. +type GetActionDataResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionDataResponseMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionDataResponseMultiError) AllErrors() []error { return m } + +// GetActionDataResponseValidationError is the validation error returned by +// GetActionDataResponse.Validate if the designated constraints aren't met. +type GetActionDataResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionDataResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionDataResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionDataResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionDataResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionDataResponseValidationError) ErrorName() string { + return "GetActionDataResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionDataResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionDataResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionDataResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionDataResponseValidationError{} diff --git a/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go b/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go index 6873fce640..1594aeb35d 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go +++ b/gen/go/flyteidl2/dataproxy/dataproxy_service_grpc.pb.go @@ -21,6 +21,7 @@ const _ = grpc.SupportPackageIsVersion7 const ( DataProxyService_CreateUploadLocation_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/CreateUploadLocation" DataProxyService_UploadInputs_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/UploadInputs" + DataProxyService_GetActionData_FullMethodName = "/flyteidl2.dataproxy.DataProxyService/GetActionData" ) // DataProxyServiceClient is the client API for DataProxyService service. @@ -30,6 +31,8 @@ type DataProxyServiceClient interface { // CreateUploadLocation generates a signed URL for uploading data to the configured storage backend. CreateUploadLocation(ctx context.Context, in *CreateUploadLocationRequest, opts ...grpc.CallOption) (*CreateUploadLocationResponse, error) UploadInputs(ctx context.Context, in *UploadInputsRequest, opts ...grpc.CallOption) (*UploadInputsResponse, error) + // Get input and output data for an action. + GetActionData(ctx context.Context, in *GetActionDataRequest, opts ...grpc.CallOption) (*GetActionDataResponse, error) } type dataProxyServiceClient struct { @@ -58,6 +61,15 @@ func (c *dataProxyServiceClient) UploadInputs(ctx context.Context, in *UploadInp return out, nil } +func (c *dataProxyServiceClient) GetActionData(ctx context.Context, in *GetActionDataRequest, opts ...grpc.CallOption) (*GetActionDataResponse, error) { + out := new(GetActionDataResponse) + err := c.cc.Invoke(ctx, DataProxyService_GetActionData_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DataProxyServiceServer is the server API for DataProxyService service. // All implementations should embed UnimplementedDataProxyServiceServer // for forward compatibility @@ -65,6 +77,8 @@ type DataProxyServiceServer interface { // CreateUploadLocation generates a signed URL for uploading data to the configured storage backend. CreateUploadLocation(context.Context, *CreateUploadLocationRequest) (*CreateUploadLocationResponse, error) UploadInputs(context.Context, *UploadInputsRequest) (*UploadInputsResponse, error) + // Get input and output data for an action. + GetActionData(context.Context, *GetActionDataRequest) (*GetActionDataResponse, error) } // UnimplementedDataProxyServiceServer should be embedded to have forward compatible implementations. @@ -77,6 +91,9 @@ func (UnimplementedDataProxyServiceServer) CreateUploadLocation(context.Context, func (UnimplementedDataProxyServiceServer) UploadInputs(context.Context, *UploadInputsRequest) (*UploadInputsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UploadInputs not implemented") } +func (UnimplementedDataProxyServiceServer) GetActionData(context.Context, *GetActionDataRequest) (*GetActionDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetActionData not implemented") +} // UnsafeDataProxyServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to DataProxyServiceServer will @@ -125,6 +142,24 @@ func _DataProxyService_UploadInputs_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _DataProxyService_GetActionData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetActionDataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataProxyServiceServer).GetActionData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: DataProxyService_GetActionData_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataProxyServiceServer).GetActionData(ctx, req.(*GetActionDataRequest)) + } + return interceptor(ctx, in, info, handler) +} + // DataProxyService_ServiceDesc is the grpc.ServiceDesc for DataProxyService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -140,6 +175,10 @@ var DataProxyService_ServiceDesc = grpc.ServiceDesc{ MethodName: "UploadInputs", Handler: _DataProxyService_UploadInputs_Handler, }, + { + MethodName: "GetActionData", + Handler: _DataProxyService_GetActionData_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "flyteidl2/dataproxy/dataproxy_service.proto", diff --git a/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go b/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go index 046045ba10..d7bcd8ff3c 100644 --- a/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go +++ b/gen/go/flyteidl2/dataproxy/dataproxyconnect/dataproxy_service.connect.go @@ -39,6 +39,9 @@ const ( // DataProxyServiceUploadInputsProcedure is the fully-qualified name of the DataProxyService's // UploadInputs RPC. DataProxyServiceUploadInputsProcedure = "/flyteidl2.dataproxy.DataProxyService/UploadInputs" + // DataProxyServiceGetActionDataProcedure is the fully-qualified name of the DataProxyService's + // GetActionData RPC. + DataProxyServiceGetActionDataProcedure = "/flyteidl2.dataproxy.DataProxyService/GetActionData" ) // These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. @@ -46,6 +49,7 @@ var ( dataProxyServiceServiceDescriptor = dataproxy.File_flyteidl2_dataproxy_dataproxy_service_proto.Services().ByName("DataProxyService") dataProxyServiceCreateUploadLocationMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("CreateUploadLocation") dataProxyServiceUploadInputsMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("UploadInputs") + dataProxyServiceGetActionDataMethodDescriptor = dataProxyServiceServiceDescriptor.Methods().ByName("GetActionData") ) // DataProxyServiceClient is a client for the flyteidl2.dataproxy.DataProxyService service. @@ -53,6 +57,8 @@ type DataProxyServiceClient interface { // CreateUploadLocation generates a signed URL for uploading data to the configured storage backend. CreateUploadLocation(context.Context, *connect.Request[dataproxy.CreateUploadLocationRequest]) (*connect.Response[dataproxy.CreateUploadLocationResponse], error) UploadInputs(context.Context, *connect.Request[dataproxy.UploadInputsRequest]) (*connect.Response[dataproxy.UploadInputsResponse], error) + // Get input and output data for an action. + GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) } // NewDataProxyServiceClient constructs a client for the flyteidl2.dataproxy.DataProxyService @@ -77,6 +83,13 @@ func NewDataProxyServiceClient(httpClient connect.HTTPClient, baseURL string, op connect.WithSchema(dataProxyServiceUploadInputsMethodDescriptor), connect.WithClientOptions(opts...), ), + getActionData: connect.NewClient[dataproxy.GetActionDataRequest, dataproxy.GetActionDataResponse]( + httpClient, + baseURL+DataProxyServiceGetActionDataProcedure, + connect.WithSchema(dataProxyServiceGetActionDataMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), } } @@ -84,6 +97,7 @@ func NewDataProxyServiceClient(httpClient connect.HTTPClient, baseURL string, op type dataProxyServiceClient struct { createUploadLocation *connect.Client[dataproxy.CreateUploadLocationRequest, dataproxy.CreateUploadLocationResponse] uploadInputs *connect.Client[dataproxy.UploadInputsRequest, dataproxy.UploadInputsResponse] + getActionData *connect.Client[dataproxy.GetActionDataRequest, dataproxy.GetActionDataResponse] } // CreateUploadLocation calls flyteidl2.dataproxy.DataProxyService.CreateUploadLocation. @@ -96,11 +110,18 @@ func (c *dataProxyServiceClient) UploadInputs(ctx context.Context, req *connect. return c.uploadInputs.CallUnary(ctx, req) } +// GetActionData calls flyteidl2.dataproxy.DataProxyService.GetActionData. +func (c *dataProxyServiceClient) GetActionData(ctx context.Context, req *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) { + return c.getActionData.CallUnary(ctx, req) +} + // DataProxyServiceHandler is an implementation of the flyteidl2.dataproxy.DataProxyService service. type DataProxyServiceHandler interface { // CreateUploadLocation generates a signed URL for uploading data to the configured storage backend. CreateUploadLocation(context.Context, *connect.Request[dataproxy.CreateUploadLocationRequest]) (*connect.Response[dataproxy.CreateUploadLocationResponse], error) UploadInputs(context.Context, *connect.Request[dataproxy.UploadInputsRequest]) (*connect.Response[dataproxy.UploadInputsResponse], error) + // Get input and output data for an action. + GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) } // NewDataProxyServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -121,12 +142,21 @@ func NewDataProxyServiceHandler(svc DataProxyServiceHandler, opts ...connect.Han connect.WithSchema(dataProxyServiceUploadInputsMethodDescriptor), connect.WithHandlerOptions(opts...), ) + dataProxyServiceGetActionDataHandler := connect.NewUnaryHandler( + DataProxyServiceGetActionDataProcedure, + svc.GetActionData, + connect.WithSchema(dataProxyServiceGetActionDataMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) return "/flyteidl2.dataproxy.DataProxyService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case DataProxyServiceCreateUploadLocationProcedure: dataProxyServiceCreateUploadLocationHandler.ServeHTTP(w, r) case DataProxyServiceUploadInputsProcedure: dataProxyServiceUploadInputsHandler.ServeHTTP(w, r) + case DataProxyServiceGetActionDataProcedure: + dataProxyServiceGetActionDataHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -143,3 +173,7 @@ func (UnimplementedDataProxyServiceHandler) CreateUploadLocation(context.Context func (UnimplementedDataProxyServiceHandler) UploadInputs(context.Context, *connect.Request[dataproxy.UploadInputsRequest]) (*connect.Response[dataproxy.UploadInputsResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.dataproxy.DataProxyService.UploadInputs is not implemented")) } + +func (UnimplementedDataProxyServiceHandler) GetActionData(context.Context, *connect.Request[dataproxy.GetActionDataRequest]) (*connect.Response[dataproxy.GetActionDataResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.dataproxy.DataProxyService.GetActionData is not implemented")) +} diff --git a/gen/go/flyteidl2/workflow/run_service.pb.go b/gen/go/flyteidl2/workflow/run_service.pb.go index c736f2f399..c6344e8c3b 100644 --- a/gen/go/flyteidl2/workflow/run_service.pb.go +++ b/gen/go/flyteidl2/workflow/run_service.pb.go @@ -875,6 +875,113 @@ func (x *GetActionDataResponse) GetOutputs() *task.Outputs { return nil } +// Request message for getting action data URIs. +type GetActionDataURIsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Action to query. + ActionId *common.ActionIdentifier `protobuf:"bytes,1,opt,name=action_id,json=actionId,proto3" json:"action_id,omitempty"` +} + +func (x *GetActionDataURIsRequest) Reset() { + *x = GetActionDataURIsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionDataURIsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionDataURIsRequest) ProtoMessage() {} + +func (x *GetActionDataURIsRequest) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[14] + 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 GetActionDataURIsRequest.ProtoReflect.Descriptor instead. +func (*GetActionDataURIsRequest) Descriptor() ([]byte, []int) { + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{14} +} + +func (x *GetActionDataURIsRequest) GetActionId() *common.ActionIdentifier { + if x != nil { + return x.ActionId + } + return nil +} + +// Response message for getting action data URIs. +type GetActionDataURIsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // URI for the action's input data. + InputsUri string `protobuf:"bytes,1,opt,name=inputs_uri,json=inputsUri,proto3" json:"inputs_uri,omitempty"` + // URI for the action's output data. Empty if action hasn't succeeded or has no outputs. + OutputsUri string `protobuf:"bytes,2,opt,name=outputs_uri,json=outputsUri,proto3" json:"outputs_uri,omitempty"` +} + +func (x *GetActionDataURIsResponse) Reset() { + *x = GetActionDataURIsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetActionDataURIsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetActionDataURIsResponse) ProtoMessage() {} + +func (x *GetActionDataURIsResponse) ProtoReflect() protoreflect.Message { + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[15] + 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 GetActionDataURIsResponse.ProtoReflect.Descriptor instead. +func (*GetActionDataURIsResponse) Descriptor() ([]byte, []int) { + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{15} +} + +func (x *GetActionDataURIsResponse) GetInputsUri() string { + if x != nil { + return x.InputsUri + } + return "" +} + +func (x *GetActionDataURIsResponse) GetOutputsUri() string { + if x != nil { + return x.OutputsUri + } + return "" +} + // Request message for listing runs. type ListRunsRequest struct { state protoimpl.MessageState @@ -896,7 +1003,7 @@ type ListRunsRequest struct { func (x *ListRunsRequest) Reset() { *x = ListRunsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[14] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -909,7 +1016,7 @@ func (x *ListRunsRequest) String() string { func (*ListRunsRequest) ProtoMessage() {} func (x *ListRunsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[14] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -922,7 +1029,7 @@ func (x *ListRunsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRunsRequest.ProtoReflect.Descriptor instead. func (*ListRunsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{14} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{16} } func (x *ListRunsRequest) GetRequest() *common.ListRequest { @@ -1028,7 +1135,7 @@ type ListRunsResponse struct { func (x *ListRunsResponse) Reset() { *x = ListRunsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[15] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1041,7 +1148,7 @@ func (x *ListRunsResponse) String() string { func (*ListRunsResponse) ProtoMessage() {} func (x *ListRunsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[15] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1054,7 +1161,7 @@ func (x *ListRunsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRunsResponse.ProtoReflect.Descriptor instead. func (*ListRunsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{15} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{17} } func (x *ListRunsResponse) GetRuns() []*Run { @@ -1089,7 +1196,7 @@ type WatchRunsRequest struct { func (x *WatchRunsRequest) Reset() { *x = WatchRunsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1102,7 +1209,7 @@ func (x *WatchRunsRequest) String() string { func (*WatchRunsRequest) ProtoMessage() {} func (x *WatchRunsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[16] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1115,7 +1222,7 @@ func (x *WatchRunsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchRunsRequest.ProtoReflect.Descriptor instead. func (*WatchRunsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{16} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{18} } func (m *WatchRunsRequest) GetTarget() isWatchRunsRequest_Target { @@ -1198,7 +1305,7 @@ type WatchRunsResponse struct { func (x *WatchRunsResponse) Reset() { *x = WatchRunsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1211,7 +1318,7 @@ func (x *WatchRunsResponse) String() string { func (*WatchRunsResponse) ProtoMessage() {} func (x *WatchRunsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[17] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1224,7 +1331,7 @@ func (x *WatchRunsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchRunsResponse.ProtoReflect.Descriptor instead. func (*WatchRunsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{17} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{19} } func (x *WatchRunsResponse) GetRuns() []*Run { @@ -1249,7 +1356,7 @@ type ListActionsRequest struct { func (x *ListActionsRequest) Reset() { *x = ListActionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1262,7 +1369,7 @@ func (x *ListActionsRequest) String() string { func (*ListActionsRequest) ProtoMessage() {} func (x *ListActionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[18] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1275,7 +1382,7 @@ func (x *ListActionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListActionsRequest.ProtoReflect.Descriptor instead. func (*ListActionsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{18} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{20} } func (x *ListActionsRequest) GetRequest() *common.ListRequest { @@ -1307,7 +1414,7 @@ type ListActionsResponse struct { func (x *ListActionsResponse) Reset() { *x = ListActionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1320,7 +1427,7 @@ func (x *ListActionsResponse) String() string { func (*ListActionsResponse) ProtoMessage() {} func (x *ListActionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[19] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1333,7 +1440,7 @@ func (x *ListActionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListActionsResponse.ProtoReflect.Descriptor instead. func (*ListActionsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{19} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{21} } func (x *ListActionsResponse) GetActions() []*Action { @@ -1368,7 +1475,7 @@ type WatchActionsRequest struct { func (x *WatchActionsRequest) Reset() { *x = WatchActionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1381,7 +1488,7 @@ func (x *WatchActionsRequest) String() string { func (*WatchActionsRequest) ProtoMessage() {} func (x *WatchActionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[20] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1394,7 +1501,7 @@ func (x *WatchActionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchActionsRequest.ProtoReflect.Descriptor instead. func (*WatchActionsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{20} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{22} } func (x *WatchActionsRequest) GetRunId() *common.RunIdentifier { @@ -1424,7 +1531,7 @@ type WatchActionsResponse struct { func (x *WatchActionsResponse) Reset() { *x = WatchActionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1437,7 +1544,7 @@ func (x *WatchActionsResponse) String() string { func (*WatchActionsResponse) ProtoMessage() {} func (x *WatchActionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[21] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1450,7 +1557,7 @@ func (x *WatchActionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchActionsResponse.ProtoReflect.Descriptor instead. func (*WatchActionsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{21} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{23} } func (x *WatchActionsResponse) GetEnrichedActions() []*EnrichedAction { @@ -1472,7 +1579,7 @@ type WatchClusterEventsRequest struct { func (x *WatchClusterEventsRequest) Reset() { *x = WatchClusterEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1592,7 @@ func (x *WatchClusterEventsRequest) String() string { func (*WatchClusterEventsRequest) ProtoMessage() {} func (x *WatchClusterEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[22] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1605,7 @@ func (x *WatchClusterEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterEventsRequest.ProtoReflect.Descriptor instead. func (*WatchClusterEventsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{22} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{24} } func (x *WatchClusterEventsRequest) GetId() *common.ActionIdentifier { @@ -1526,7 +1633,7 @@ type WatchClusterEventsResponse struct { func (x *WatchClusterEventsResponse) Reset() { *x = WatchClusterEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1539,7 +1646,7 @@ func (x *WatchClusterEventsResponse) String() string { func (*WatchClusterEventsResponse) ProtoMessage() {} func (x *WatchClusterEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[23] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1552,7 +1659,7 @@ func (x *WatchClusterEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterEventsResponse.ProtoReflect.Descriptor instead. func (*WatchClusterEventsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{23} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{25} } func (x *WatchClusterEventsResponse) GetClusterEvents() []*ClusterEvent { @@ -1576,7 +1683,7 @@ type AbortActionRequest struct { func (x *AbortActionRequest) Reset() { *x = AbortActionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1589,7 +1696,7 @@ func (x *AbortActionRequest) String() string { func (*AbortActionRequest) ProtoMessage() {} func (x *AbortActionRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[24] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1602,7 +1709,7 @@ func (x *AbortActionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortActionRequest.ProtoReflect.Descriptor instead. func (*AbortActionRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{24} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{26} } func (x *AbortActionRequest) GetActionId() *common.ActionIdentifier { @@ -1628,7 +1735,7 @@ type AbortActionResponse struct { func (x *AbortActionResponse) Reset() { *x = AbortActionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1641,7 +1748,7 @@ func (x *AbortActionResponse) String() string { func (*AbortActionResponse) ProtoMessage() {} func (x *AbortActionResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[25] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1654,7 +1761,7 @@ func (x *AbortActionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortActionResponse.ProtoReflect.Descriptor instead. func (*AbortActionResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{25} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{27} } type WatchGroupsRequest struct { @@ -1681,7 +1788,7 @@ type WatchGroupsRequest struct { func (x *WatchGroupsRequest) Reset() { *x = WatchGroupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1694,7 +1801,7 @@ func (x *WatchGroupsRequest) String() string { func (*WatchGroupsRequest) ProtoMessage() {} func (x *WatchGroupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[26] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1707,7 +1814,7 @@ func (x *WatchGroupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchGroupsRequest.ProtoReflect.Descriptor instead. func (*WatchGroupsRequest) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{26} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{28} } func (m *WatchGroupsRequest) GetScopeBy() isWatchGroupsRequest_ScopeBy { @@ -1780,7 +1887,7 @@ type WatchGroupsResponse struct { func (x *WatchGroupsResponse) Reset() { *x = WatchGroupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1793,7 +1900,7 @@ func (x *WatchGroupsResponse) String() string { func (*WatchGroupsResponse) ProtoMessage() {} func (x *WatchGroupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[27] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1806,7 +1913,7 @@ func (x *WatchGroupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchGroupsResponse.ProtoReflect.Descriptor instead. func (*WatchGroupsResponse) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{27} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{29} } func (x *WatchGroupsResponse) GetTaskGroups() []*TaskGroup { @@ -1837,7 +1944,7 @@ type WatchGroupsRequest_KnownSortField struct { func (x *WatchGroupsRequest_KnownSortField) Reset() { *x = WatchGroupsRequest_KnownSortField{} if protoimpl.UnsafeEnabled { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1850,7 +1957,7 @@ func (x *WatchGroupsRequest_KnownSortField) String() string { func (*WatchGroupsRequest_KnownSortField) ProtoMessage() {} func (x *WatchGroupsRequest_KnownSortField) ProtoReflect() protoreflect.Message { - mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[28] + mi := &file_flyteidl2_workflow_run_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1863,7 +1970,7 @@ func (x *WatchGroupsRequest_KnownSortField) ProtoReflect() protoreflect.Message // Deprecated: Use WatchGroupsRequest_KnownSortField.ProtoReflect.Descriptor instead. func (*WatchGroupsRequest_KnownSortField) Descriptor() ([]byte, []int) { - return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{26, 0} + return file_flyteidl2_workflow_run_service_proto_rawDescGZIP(), []int{28, 0} } func (m *WatchGroupsRequest_KnownSortField) GetSortBy() isWatchGroupsRequest_KnownSortField_SortBy { @@ -2026,253 +2133,273 @@ var file_flyteidl2_workflow_run_service_proto_rawDesc = []byte{ 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, - 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, - 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, - 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, - 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x07, - 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, - 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, - 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, - 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, - 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, - 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, - 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, - 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x63, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, + 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, + 0x69, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, + 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, + 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, - 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, - 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, - 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x45, 0x6e, - 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, - 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, - 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, - 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, - 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, - 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x2e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, - 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, - 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x74, - 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, - 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb9, 0x0b, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x23, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x66, + 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, + 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, + 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, + 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5a, - 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x09, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, - 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, + 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, + 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, + 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, + 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, + 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, + 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, - 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, + 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, + 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, + 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, + 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb3, 0x0c, 0x0a, 0x0a, 0x52, 0x75, + 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, + 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, + 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, + 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x42, 0xcc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, - 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, - 0x02, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, - 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, - 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, + 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, + 0xcc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, + 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, + 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2287,7 +2414,7 @@ func file_flyteidl2_workflow_run_service_proto_rawDescGZIP() []byte { return file_flyteidl2_workflow_run_service_proto_rawDescData } -var file_flyteidl2_workflow_run_service_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_flyteidl2_workflow_run_service_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_flyteidl2_workflow_run_service_proto_goTypes = []interface{}{ (*CreateRunRequest)(nil), // 0: flyteidl2.workflow.CreateRunRequest (*CreateRunResponse)(nil), // 1: flyteidl2.workflow.CreateRunResponse @@ -2303,128 +2430,133 @@ var file_flyteidl2_workflow_run_service_proto_goTypes = []interface{}{ (*WatchActionDetailsResponse)(nil), // 11: flyteidl2.workflow.WatchActionDetailsResponse (*GetActionDataRequest)(nil), // 12: flyteidl2.workflow.GetActionDataRequest (*GetActionDataResponse)(nil), // 13: flyteidl2.workflow.GetActionDataResponse - (*ListRunsRequest)(nil), // 14: flyteidl2.workflow.ListRunsRequest - (*ListRunsResponse)(nil), // 15: flyteidl2.workflow.ListRunsResponse - (*WatchRunsRequest)(nil), // 16: flyteidl2.workflow.WatchRunsRequest - (*WatchRunsResponse)(nil), // 17: flyteidl2.workflow.WatchRunsResponse - (*ListActionsRequest)(nil), // 18: flyteidl2.workflow.ListActionsRequest - (*ListActionsResponse)(nil), // 19: flyteidl2.workflow.ListActionsResponse - (*WatchActionsRequest)(nil), // 20: flyteidl2.workflow.WatchActionsRequest - (*WatchActionsResponse)(nil), // 21: flyteidl2.workflow.WatchActionsResponse - (*WatchClusterEventsRequest)(nil), // 22: flyteidl2.workflow.WatchClusterEventsRequest - (*WatchClusterEventsResponse)(nil), // 23: flyteidl2.workflow.WatchClusterEventsResponse - (*AbortActionRequest)(nil), // 24: flyteidl2.workflow.AbortActionRequest - (*AbortActionResponse)(nil), // 25: flyteidl2.workflow.AbortActionResponse - (*WatchGroupsRequest)(nil), // 26: flyteidl2.workflow.WatchGroupsRequest - (*WatchGroupsResponse)(nil), // 27: flyteidl2.workflow.WatchGroupsResponse - (*WatchGroupsRequest_KnownSortField)(nil), // 28: flyteidl2.workflow.WatchGroupsRequest.KnownSortField - (*common.RunIdentifier)(nil), // 29: flyteidl2.common.RunIdentifier - (*common.ProjectIdentifier)(nil), // 30: flyteidl2.common.ProjectIdentifier - (*task.TaskIdentifier)(nil), // 31: flyteidl2.task.TaskIdentifier - (*task.TaskSpec)(nil), // 32: flyteidl2.task.TaskSpec - (*common.TriggerName)(nil), // 33: flyteidl2.common.TriggerName - (*task.Inputs)(nil), // 34: flyteidl2.task.Inputs - (*common.OffloadedInputData)(nil), // 35: flyteidl2.common.OffloadedInputData - (*task.RunSpec)(nil), // 36: flyteidl2.task.RunSpec - (RunSource)(0), // 37: flyteidl2.workflow.RunSource - (*Run)(nil), // 38: flyteidl2.workflow.Run - (*RunDetails)(nil), // 39: flyteidl2.workflow.RunDetails - (*common.ActionIdentifier)(nil), // 40: flyteidl2.common.ActionIdentifier - (*ActionDetails)(nil), // 41: flyteidl2.workflow.ActionDetails - (*task.Outputs)(nil), // 42: flyteidl2.task.Outputs - (*common.ListRequest)(nil), // 43: flyteidl2.common.ListRequest - (*task.TaskName)(nil), // 44: flyteidl2.task.TaskName - (*common.ClusterIdentifier)(nil), // 45: flyteidl2.common.ClusterIdentifier - (*Action)(nil), // 46: flyteidl2.workflow.Action - (*common.Filter)(nil), // 47: flyteidl2.common.Filter - (*EnrichedAction)(nil), // 48: flyteidl2.workflow.EnrichedAction - (*ClusterEvent)(nil), // 49: flyteidl2.workflow.ClusterEvent - (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp - (*TaskGroup)(nil), // 51: flyteidl2.workflow.TaskGroup - (common.Sort_Direction)(0), // 52: flyteidl2.common.Sort.Direction + (*GetActionDataURIsRequest)(nil), // 14: flyteidl2.workflow.GetActionDataURIsRequest + (*GetActionDataURIsResponse)(nil), // 15: flyteidl2.workflow.GetActionDataURIsResponse + (*ListRunsRequest)(nil), // 16: flyteidl2.workflow.ListRunsRequest + (*ListRunsResponse)(nil), // 17: flyteidl2.workflow.ListRunsResponse + (*WatchRunsRequest)(nil), // 18: flyteidl2.workflow.WatchRunsRequest + (*WatchRunsResponse)(nil), // 19: flyteidl2.workflow.WatchRunsResponse + (*ListActionsRequest)(nil), // 20: flyteidl2.workflow.ListActionsRequest + (*ListActionsResponse)(nil), // 21: flyteidl2.workflow.ListActionsResponse + (*WatchActionsRequest)(nil), // 22: flyteidl2.workflow.WatchActionsRequest + (*WatchActionsResponse)(nil), // 23: flyteidl2.workflow.WatchActionsResponse + (*WatchClusterEventsRequest)(nil), // 24: flyteidl2.workflow.WatchClusterEventsRequest + (*WatchClusterEventsResponse)(nil), // 25: flyteidl2.workflow.WatchClusterEventsResponse + (*AbortActionRequest)(nil), // 26: flyteidl2.workflow.AbortActionRequest + (*AbortActionResponse)(nil), // 27: flyteidl2.workflow.AbortActionResponse + (*WatchGroupsRequest)(nil), // 28: flyteidl2.workflow.WatchGroupsRequest + (*WatchGroupsResponse)(nil), // 29: flyteidl2.workflow.WatchGroupsResponse + (*WatchGroupsRequest_KnownSortField)(nil), // 30: flyteidl2.workflow.WatchGroupsRequest.KnownSortField + (*common.RunIdentifier)(nil), // 31: flyteidl2.common.RunIdentifier + (*common.ProjectIdentifier)(nil), // 32: flyteidl2.common.ProjectIdentifier + (*task.TaskIdentifier)(nil), // 33: flyteidl2.task.TaskIdentifier + (*task.TaskSpec)(nil), // 34: flyteidl2.task.TaskSpec + (*common.TriggerName)(nil), // 35: flyteidl2.common.TriggerName + (*task.Inputs)(nil), // 36: flyteidl2.task.Inputs + (*common.OffloadedInputData)(nil), // 37: flyteidl2.common.OffloadedInputData + (*task.RunSpec)(nil), // 38: flyteidl2.task.RunSpec + (RunSource)(0), // 39: flyteidl2.workflow.RunSource + (*Run)(nil), // 40: flyteidl2.workflow.Run + (*RunDetails)(nil), // 41: flyteidl2.workflow.RunDetails + (*common.ActionIdentifier)(nil), // 42: flyteidl2.common.ActionIdentifier + (*ActionDetails)(nil), // 43: flyteidl2.workflow.ActionDetails + (*task.Outputs)(nil), // 44: flyteidl2.task.Outputs + (*common.ListRequest)(nil), // 45: flyteidl2.common.ListRequest + (*task.TaskName)(nil), // 46: flyteidl2.task.TaskName + (*common.ClusterIdentifier)(nil), // 47: flyteidl2.common.ClusterIdentifier + (*Action)(nil), // 48: flyteidl2.workflow.Action + (*common.Filter)(nil), // 49: flyteidl2.common.Filter + (*EnrichedAction)(nil), // 50: flyteidl2.workflow.EnrichedAction + (*ClusterEvent)(nil), // 51: flyteidl2.workflow.ClusterEvent + (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp + (*TaskGroup)(nil), // 53: flyteidl2.workflow.TaskGroup + (common.Sort_Direction)(0), // 54: flyteidl2.common.Sort.Direction } var file_flyteidl2_workflow_run_service_proto_depIdxs = []int32{ - 29, // 0: flyteidl2.workflow.CreateRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 30, // 1: flyteidl2.workflow.CreateRunRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 31, // 2: flyteidl2.workflow.CreateRunRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 32, // 3: flyteidl2.workflow.CreateRunRequest.task_spec:type_name -> flyteidl2.task.TaskSpec - 33, // 4: flyteidl2.workflow.CreateRunRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 34, // 5: flyteidl2.workflow.CreateRunRequest.inputs:type_name -> flyteidl2.task.Inputs - 35, // 6: flyteidl2.workflow.CreateRunRequest.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData - 36, // 7: flyteidl2.workflow.CreateRunRequest.run_spec:type_name -> flyteidl2.task.RunSpec - 37, // 8: flyteidl2.workflow.CreateRunRequest.source:type_name -> flyteidl2.workflow.RunSource - 38, // 9: flyteidl2.workflow.CreateRunResponse.run:type_name -> flyteidl2.workflow.Run - 29, // 10: flyteidl2.workflow.AbortRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 29, // 11: flyteidl2.workflow.GetRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 39, // 12: flyteidl2.workflow.GetRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails - 29, // 13: flyteidl2.workflow.WatchRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 39, // 14: flyteidl2.workflow.WatchRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails - 40, // 15: flyteidl2.workflow.GetActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 41, // 16: flyteidl2.workflow.GetActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails - 40, // 17: flyteidl2.workflow.WatchActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 41, // 18: flyteidl2.workflow.WatchActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails - 40, // 19: flyteidl2.workflow.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 34, // 20: flyteidl2.workflow.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs - 42, // 21: flyteidl2.workflow.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs - 43, // 22: flyteidl2.workflow.ListRunsRequest.request:type_name -> flyteidl2.common.ListRequest - 30, // 23: flyteidl2.workflow.ListRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 33, // 24: flyteidl2.workflow.ListRunsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName - 44, // 25: flyteidl2.workflow.ListRunsRequest.task_name:type_name -> flyteidl2.task.TaskName - 31, // 26: flyteidl2.workflow.ListRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 38, // 27: flyteidl2.workflow.ListRunsResponse.runs:type_name -> flyteidl2.workflow.Run - 45, // 28: flyteidl2.workflow.WatchRunsRequest.cluster_id:type_name -> flyteidl2.common.ClusterIdentifier - 30, // 29: flyteidl2.workflow.WatchRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 31, // 30: flyteidl2.workflow.WatchRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier - 38, // 31: flyteidl2.workflow.WatchRunsResponse.runs:type_name -> flyteidl2.workflow.Run - 43, // 32: flyteidl2.workflow.ListActionsRequest.request:type_name -> flyteidl2.common.ListRequest - 29, // 33: flyteidl2.workflow.ListActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 46, // 34: flyteidl2.workflow.ListActionsResponse.actions:type_name -> flyteidl2.workflow.Action - 29, // 35: flyteidl2.workflow.WatchActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier - 47, // 36: flyteidl2.workflow.WatchActionsRequest.filter:type_name -> flyteidl2.common.Filter - 48, // 37: flyteidl2.workflow.WatchActionsResponse.enriched_actions:type_name -> flyteidl2.workflow.EnrichedAction - 40, // 38: flyteidl2.workflow.WatchClusterEventsRequest.id:type_name -> flyteidl2.common.ActionIdentifier - 49, // 39: flyteidl2.workflow.WatchClusterEventsResponse.cluster_events:type_name -> flyteidl2.workflow.ClusterEvent - 40, // 40: flyteidl2.workflow.AbortActionRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier - 30, // 41: flyteidl2.workflow.WatchGroupsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier - 50, // 42: flyteidl2.workflow.WatchGroupsRequest.start_date:type_name -> google.protobuf.Timestamp - 50, // 43: flyteidl2.workflow.WatchGroupsRequest.end_date:type_name -> google.protobuf.Timestamp - 43, // 44: flyteidl2.workflow.WatchGroupsRequest.request:type_name -> flyteidl2.common.ListRequest - 28, // 45: flyteidl2.workflow.WatchGroupsRequest.known_sort_fields:type_name -> flyteidl2.workflow.WatchGroupsRequest.KnownSortField - 51, // 46: flyteidl2.workflow.WatchGroupsResponse.task_groups:type_name -> flyteidl2.workflow.TaskGroup - 52, // 47: flyteidl2.workflow.WatchGroupsRequest.KnownSortField.created_at:type_name -> flyteidl2.common.Sort.Direction - 0, // 48: flyteidl2.workflow.RunService.CreateRun:input_type -> flyteidl2.workflow.CreateRunRequest - 2, // 49: flyteidl2.workflow.RunService.AbortRun:input_type -> flyteidl2.workflow.AbortRunRequest - 4, // 50: flyteidl2.workflow.RunService.GetRunDetails:input_type -> flyteidl2.workflow.GetRunDetailsRequest - 6, // 51: flyteidl2.workflow.RunService.WatchRunDetails:input_type -> flyteidl2.workflow.WatchRunDetailsRequest - 8, // 52: flyteidl2.workflow.RunService.GetActionDetails:input_type -> flyteidl2.workflow.GetActionDetailsRequest - 10, // 53: flyteidl2.workflow.RunService.WatchActionDetails:input_type -> flyteidl2.workflow.WatchActionDetailsRequest - 12, // 54: flyteidl2.workflow.RunService.GetActionData:input_type -> flyteidl2.workflow.GetActionDataRequest - 14, // 55: flyteidl2.workflow.RunService.ListRuns:input_type -> flyteidl2.workflow.ListRunsRequest - 16, // 56: flyteidl2.workflow.RunService.WatchRuns:input_type -> flyteidl2.workflow.WatchRunsRequest - 18, // 57: flyteidl2.workflow.RunService.ListActions:input_type -> flyteidl2.workflow.ListActionsRequest - 20, // 58: flyteidl2.workflow.RunService.WatchActions:input_type -> flyteidl2.workflow.WatchActionsRequest - 22, // 59: flyteidl2.workflow.RunService.WatchClusterEvents:input_type -> flyteidl2.workflow.WatchClusterEventsRequest - 24, // 60: flyteidl2.workflow.RunService.AbortAction:input_type -> flyteidl2.workflow.AbortActionRequest - 26, // 61: flyteidl2.workflow.RunService.WatchGroups:input_type -> flyteidl2.workflow.WatchGroupsRequest - 1, // 62: flyteidl2.workflow.RunService.CreateRun:output_type -> flyteidl2.workflow.CreateRunResponse - 3, // 63: flyteidl2.workflow.RunService.AbortRun:output_type -> flyteidl2.workflow.AbortRunResponse - 5, // 64: flyteidl2.workflow.RunService.GetRunDetails:output_type -> flyteidl2.workflow.GetRunDetailsResponse - 7, // 65: flyteidl2.workflow.RunService.WatchRunDetails:output_type -> flyteidl2.workflow.WatchRunDetailsResponse - 9, // 66: flyteidl2.workflow.RunService.GetActionDetails:output_type -> flyteidl2.workflow.GetActionDetailsResponse - 11, // 67: flyteidl2.workflow.RunService.WatchActionDetails:output_type -> flyteidl2.workflow.WatchActionDetailsResponse - 13, // 68: flyteidl2.workflow.RunService.GetActionData:output_type -> flyteidl2.workflow.GetActionDataResponse - 15, // 69: flyteidl2.workflow.RunService.ListRuns:output_type -> flyteidl2.workflow.ListRunsResponse - 17, // 70: flyteidl2.workflow.RunService.WatchRuns:output_type -> flyteidl2.workflow.WatchRunsResponse - 19, // 71: flyteidl2.workflow.RunService.ListActions:output_type -> flyteidl2.workflow.ListActionsResponse - 21, // 72: flyteidl2.workflow.RunService.WatchActions:output_type -> flyteidl2.workflow.WatchActionsResponse - 23, // 73: flyteidl2.workflow.RunService.WatchClusterEvents:output_type -> flyteidl2.workflow.WatchClusterEventsResponse - 25, // 74: flyteidl2.workflow.RunService.AbortAction:output_type -> flyteidl2.workflow.AbortActionResponse - 27, // 75: flyteidl2.workflow.RunService.WatchGroups:output_type -> flyteidl2.workflow.WatchGroupsResponse - 62, // [62:76] is the sub-list for method output_type - 48, // [48:62] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 31, // 0: flyteidl2.workflow.CreateRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 32, // 1: flyteidl2.workflow.CreateRunRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 33, // 2: flyteidl2.workflow.CreateRunRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 34, // 3: flyteidl2.workflow.CreateRunRequest.task_spec:type_name -> flyteidl2.task.TaskSpec + 35, // 4: flyteidl2.workflow.CreateRunRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 36, // 5: flyteidl2.workflow.CreateRunRequest.inputs:type_name -> flyteidl2.task.Inputs + 37, // 6: flyteidl2.workflow.CreateRunRequest.offloaded_input_data:type_name -> flyteidl2.common.OffloadedInputData + 38, // 7: flyteidl2.workflow.CreateRunRequest.run_spec:type_name -> flyteidl2.task.RunSpec + 39, // 8: flyteidl2.workflow.CreateRunRequest.source:type_name -> flyteidl2.workflow.RunSource + 40, // 9: flyteidl2.workflow.CreateRunResponse.run:type_name -> flyteidl2.workflow.Run + 31, // 10: flyteidl2.workflow.AbortRunRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 31, // 11: flyteidl2.workflow.GetRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 41, // 12: flyteidl2.workflow.GetRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails + 31, // 13: flyteidl2.workflow.WatchRunDetailsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 41, // 14: flyteidl2.workflow.WatchRunDetailsResponse.details:type_name -> flyteidl2.workflow.RunDetails + 42, // 15: flyteidl2.workflow.GetActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 43, // 16: flyteidl2.workflow.GetActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails + 42, // 17: flyteidl2.workflow.WatchActionDetailsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 43, // 18: flyteidl2.workflow.WatchActionDetailsResponse.details:type_name -> flyteidl2.workflow.ActionDetails + 42, // 19: flyteidl2.workflow.GetActionDataRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 36, // 20: flyteidl2.workflow.GetActionDataResponse.inputs:type_name -> flyteidl2.task.Inputs + 44, // 21: flyteidl2.workflow.GetActionDataResponse.outputs:type_name -> flyteidl2.task.Outputs + 42, // 22: flyteidl2.workflow.GetActionDataURIsRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 45, // 23: flyteidl2.workflow.ListRunsRequest.request:type_name -> flyteidl2.common.ListRequest + 32, // 24: flyteidl2.workflow.ListRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 35, // 25: flyteidl2.workflow.ListRunsRequest.trigger_name:type_name -> flyteidl2.common.TriggerName + 46, // 26: flyteidl2.workflow.ListRunsRequest.task_name:type_name -> flyteidl2.task.TaskName + 33, // 27: flyteidl2.workflow.ListRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 40, // 28: flyteidl2.workflow.ListRunsResponse.runs:type_name -> flyteidl2.workflow.Run + 47, // 29: flyteidl2.workflow.WatchRunsRequest.cluster_id:type_name -> flyteidl2.common.ClusterIdentifier + 32, // 30: flyteidl2.workflow.WatchRunsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 33, // 31: flyteidl2.workflow.WatchRunsRequest.task_id:type_name -> flyteidl2.task.TaskIdentifier + 40, // 32: flyteidl2.workflow.WatchRunsResponse.runs:type_name -> flyteidl2.workflow.Run + 45, // 33: flyteidl2.workflow.ListActionsRequest.request:type_name -> flyteidl2.common.ListRequest + 31, // 34: flyteidl2.workflow.ListActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 48, // 35: flyteidl2.workflow.ListActionsResponse.actions:type_name -> flyteidl2.workflow.Action + 31, // 36: flyteidl2.workflow.WatchActionsRequest.run_id:type_name -> flyteidl2.common.RunIdentifier + 49, // 37: flyteidl2.workflow.WatchActionsRequest.filter:type_name -> flyteidl2.common.Filter + 50, // 38: flyteidl2.workflow.WatchActionsResponse.enriched_actions:type_name -> flyteidl2.workflow.EnrichedAction + 42, // 39: flyteidl2.workflow.WatchClusterEventsRequest.id:type_name -> flyteidl2.common.ActionIdentifier + 51, // 40: flyteidl2.workflow.WatchClusterEventsResponse.cluster_events:type_name -> flyteidl2.workflow.ClusterEvent + 42, // 41: flyteidl2.workflow.AbortActionRequest.action_id:type_name -> flyteidl2.common.ActionIdentifier + 32, // 42: flyteidl2.workflow.WatchGroupsRequest.project_id:type_name -> flyteidl2.common.ProjectIdentifier + 52, // 43: flyteidl2.workflow.WatchGroupsRequest.start_date:type_name -> google.protobuf.Timestamp + 52, // 44: flyteidl2.workflow.WatchGroupsRequest.end_date:type_name -> google.protobuf.Timestamp + 45, // 45: flyteidl2.workflow.WatchGroupsRequest.request:type_name -> flyteidl2.common.ListRequest + 30, // 46: flyteidl2.workflow.WatchGroupsRequest.known_sort_fields:type_name -> flyteidl2.workflow.WatchGroupsRequest.KnownSortField + 53, // 47: flyteidl2.workflow.WatchGroupsResponse.task_groups:type_name -> flyteidl2.workflow.TaskGroup + 54, // 48: flyteidl2.workflow.WatchGroupsRequest.KnownSortField.created_at:type_name -> flyteidl2.common.Sort.Direction + 0, // 49: flyteidl2.workflow.RunService.CreateRun:input_type -> flyteidl2.workflow.CreateRunRequest + 2, // 50: flyteidl2.workflow.RunService.AbortRun:input_type -> flyteidl2.workflow.AbortRunRequest + 4, // 51: flyteidl2.workflow.RunService.GetRunDetails:input_type -> flyteidl2.workflow.GetRunDetailsRequest + 6, // 52: flyteidl2.workflow.RunService.WatchRunDetails:input_type -> flyteidl2.workflow.WatchRunDetailsRequest + 8, // 53: flyteidl2.workflow.RunService.GetActionDetails:input_type -> flyteidl2.workflow.GetActionDetailsRequest + 10, // 54: flyteidl2.workflow.RunService.WatchActionDetails:input_type -> flyteidl2.workflow.WatchActionDetailsRequest + 12, // 55: flyteidl2.workflow.RunService.GetActionData:input_type -> flyteidl2.workflow.GetActionDataRequest + 16, // 56: flyteidl2.workflow.RunService.ListRuns:input_type -> flyteidl2.workflow.ListRunsRequest + 18, // 57: flyteidl2.workflow.RunService.WatchRuns:input_type -> flyteidl2.workflow.WatchRunsRequest + 20, // 58: flyteidl2.workflow.RunService.ListActions:input_type -> flyteidl2.workflow.ListActionsRequest + 22, // 59: flyteidl2.workflow.RunService.WatchActions:input_type -> flyteidl2.workflow.WatchActionsRequest + 24, // 60: flyteidl2.workflow.RunService.WatchClusterEvents:input_type -> flyteidl2.workflow.WatchClusterEventsRequest + 26, // 61: flyteidl2.workflow.RunService.AbortAction:input_type -> flyteidl2.workflow.AbortActionRequest + 28, // 62: flyteidl2.workflow.RunService.WatchGroups:input_type -> flyteidl2.workflow.WatchGroupsRequest + 14, // 63: flyteidl2.workflow.RunService.GetActionDataURIs:input_type -> flyteidl2.workflow.GetActionDataURIsRequest + 1, // 64: flyteidl2.workflow.RunService.CreateRun:output_type -> flyteidl2.workflow.CreateRunResponse + 3, // 65: flyteidl2.workflow.RunService.AbortRun:output_type -> flyteidl2.workflow.AbortRunResponse + 5, // 66: flyteidl2.workflow.RunService.GetRunDetails:output_type -> flyteidl2.workflow.GetRunDetailsResponse + 7, // 67: flyteidl2.workflow.RunService.WatchRunDetails:output_type -> flyteidl2.workflow.WatchRunDetailsResponse + 9, // 68: flyteidl2.workflow.RunService.GetActionDetails:output_type -> flyteidl2.workflow.GetActionDetailsResponse + 11, // 69: flyteidl2.workflow.RunService.WatchActionDetails:output_type -> flyteidl2.workflow.WatchActionDetailsResponse + 13, // 70: flyteidl2.workflow.RunService.GetActionData:output_type -> flyteidl2.workflow.GetActionDataResponse + 17, // 71: flyteidl2.workflow.RunService.ListRuns:output_type -> flyteidl2.workflow.ListRunsResponse + 19, // 72: flyteidl2.workflow.RunService.WatchRuns:output_type -> flyteidl2.workflow.WatchRunsResponse + 21, // 73: flyteidl2.workflow.RunService.ListActions:output_type -> flyteidl2.workflow.ListActionsResponse + 23, // 74: flyteidl2.workflow.RunService.WatchActions:output_type -> flyteidl2.workflow.WatchActionsResponse + 25, // 75: flyteidl2.workflow.RunService.WatchClusterEvents:output_type -> flyteidl2.workflow.WatchClusterEventsResponse + 27, // 76: flyteidl2.workflow.RunService.AbortAction:output_type -> flyteidl2.workflow.AbortActionResponse + 29, // 77: flyteidl2.workflow.RunService.WatchGroups:output_type -> flyteidl2.workflow.WatchGroupsResponse + 15, // 78: flyteidl2.workflow.RunService.GetActionDataURIs:output_type -> flyteidl2.workflow.GetActionDataURIsResponse + 64, // [64:79] is the sub-list for method output_type + 49, // [49:64] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name } func init() { file_flyteidl2_workflow_run_service_proto_init() } @@ -2603,7 +2735,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRunsRequest); i { + switch v := v.(*GetActionDataURIsRequest); i { case 0: return &v.state case 1: @@ -2615,7 +2747,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListRunsResponse); i { + switch v := v.(*GetActionDataURIsResponse); i { case 0: return &v.state case 1: @@ -2627,7 +2759,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchRunsRequest); i { + switch v := v.(*ListRunsRequest); i { case 0: return &v.state case 1: @@ -2639,7 +2771,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchRunsResponse); i { + switch v := v.(*ListRunsResponse); i { case 0: return &v.state case 1: @@ -2651,7 +2783,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListActionsRequest); i { + switch v := v.(*WatchRunsRequest); i { case 0: return &v.state case 1: @@ -2663,7 +2795,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListActionsResponse); i { + switch v := v.(*WatchRunsResponse); i { case 0: return &v.state case 1: @@ -2675,7 +2807,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchActionsRequest); i { + switch v := v.(*ListActionsRequest); i { case 0: return &v.state case 1: @@ -2687,7 +2819,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchActionsResponse); i { + switch v := v.(*ListActionsResponse); i { case 0: return &v.state case 1: @@ -2699,7 +2831,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterEventsRequest); i { + switch v := v.(*WatchActionsRequest); i { case 0: return &v.state case 1: @@ -2711,7 +2843,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterEventsResponse); i { + switch v := v.(*WatchActionsResponse); i { case 0: return &v.state case 1: @@ -2723,7 +2855,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortActionRequest); i { + switch v := v.(*WatchClusterEventsRequest); i { case 0: return &v.state case 1: @@ -2735,7 +2867,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AbortActionResponse); i { + switch v := v.(*WatchClusterEventsResponse); i { case 0: return &v.state case 1: @@ -2747,7 +2879,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchGroupsRequest); i { + switch v := v.(*AbortActionRequest); i { case 0: return &v.state case 1: @@ -2759,7 +2891,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchGroupsResponse); i { + switch v := v.(*AbortActionResponse); i { case 0: return &v.state case 1: @@ -2771,6 +2903,30 @@ func file_flyteidl2_workflow_run_service_proto_init() { } } file_flyteidl2_workflow_run_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchGroupsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_workflow_run_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchGroupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flyteidl2_workflow_run_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchGroupsRequest_KnownSortField); i { case 0: return &v.state @@ -2793,23 +2949,23 @@ func file_flyteidl2_workflow_run_service_proto_init() { (*CreateRunRequest_OffloadedInputData)(nil), } file_flyteidl2_workflow_run_service_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_flyteidl2_workflow_run_service_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[16].OneofWrappers = []interface{}{ (*ListRunsRequest_Org)(nil), (*ListRunsRequest_ProjectId)(nil), (*ListRunsRequest_TriggerName)(nil), (*ListRunsRequest_TaskName)(nil), (*ListRunsRequest_TaskId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[18].OneofWrappers = []interface{}{ (*WatchRunsRequest_Org)(nil), (*WatchRunsRequest_ClusterId)(nil), (*WatchRunsRequest_ProjectId)(nil), (*WatchRunsRequest_TaskId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[28].OneofWrappers = []interface{}{ (*WatchGroupsRequest_ProjectId)(nil), } - file_flyteidl2_workflow_run_service_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_flyteidl2_workflow_run_service_proto_msgTypes[30].OneofWrappers = []interface{}{ (*WatchGroupsRequest_KnownSortField_CreatedAt)(nil), } type x struct{} @@ -2818,7 +2974,7 @@ func file_flyteidl2_workflow_run_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_flyteidl2_workflow_run_service_proto_rawDesc, NumEnums: 0, - NumMessages: 29, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/flyteidl2/workflow/run_service.pb.validate.go b/gen/go/flyteidl2/workflow/run_service.pb.validate.go index 358c14ec04..2f7146d431 100644 --- a/gen/go/flyteidl2/workflow/run_service.pb.validate.go +++ b/gen/go/flyteidl2/workflow/run_service.pb.validate.go @@ -2173,6 +2173,243 @@ var _ interface { ErrorName() string } = GetActionDataResponseValidationError{} +// Validate checks the field values on GetActionDataURIsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionDataURIsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionDataURIsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionDataURIsRequestMultiError, or nil if none found. +func (m *GetActionDataURIsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionDataURIsRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetActionId()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetActionDataURIsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetActionDataURIsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetActionId()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetActionDataURIsRequestValidationError{ + field: "ActionId", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return GetActionDataURIsRequestMultiError(errors) + } + + return nil +} + +// GetActionDataURIsRequestMultiError is an error wrapping multiple validation +// errors returned by GetActionDataURIsRequest.ValidateAll() if the designated +// constraints aren't met. +type GetActionDataURIsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionDataURIsRequestMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionDataURIsRequestMultiError) AllErrors() []error { return m } + +// GetActionDataURIsRequestValidationError is the validation error returned by +// GetActionDataURIsRequest.Validate if the designated constraints aren't met. +type GetActionDataURIsRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionDataURIsRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionDataURIsRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionDataURIsRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionDataURIsRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionDataURIsRequestValidationError) ErrorName() string { + return "GetActionDataURIsRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionDataURIsRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionDataURIsRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionDataURIsRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionDataURIsRequestValidationError{} + +// Validate checks the field values on GetActionDataURIsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GetActionDataURIsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetActionDataURIsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetActionDataURIsResponseMultiError, or nil if none found. +func (m *GetActionDataURIsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetActionDataURIsResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for InputsUri + + // no validation rules for OutputsUri + + if len(errors) > 0 { + return GetActionDataURIsResponseMultiError(errors) + } + + return nil +} + +// GetActionDataURIsResponseMultiError is an error wrapping multiple validation +// errors returned by GetActionDataURIsResponse.ValidateAll() if the +// designated constraints aren't met. +type GetActionDataURIsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetActionDataURIsResponseMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetActionDataURIsResponseMultiError) AllErrors() []error { return m } + +// GetActionDataURIsResponseValidationError is the validation error returned by +// GetActionDataURIsResponse.Validate if the designated constraints aren't met. +type GetActionDataURIsResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GetActionDataURIsResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GetActionDataURIsResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GetActionDataURIsResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GetActionDataURIsResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GetActionDataURIsResponseValidationError) ErrorName() string { + return "GetActionDataURIsResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e GetActionDataURIsResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGetActionDataURIsResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GetActionDataURIsResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GetActionDataURIsResponseValidationError{} + // Validate checks the field values on ListRunsRequest with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/gen/go/flyteidl2/workflow/run_service_grpc.pb.go b/gen/go/flyteidl2/workflow/run_service_grpc.pb.go index e40486e76b..0ad3aaf57b 100644 --- a/gen/go/flyteidl2/workflow/run_service_grpc.pb.go +++ b/gen/go/flyteidl2/workflow/run_service_grpc.pb.go @@ -33,6 +33,7 @@ const ( RunService_WatchClusterEvents_FullMethodName = "/flyteidl2.workflow.RunService/WatchClusterEvents" RunService_AbortAction_FullMethodName = "/flyteidl2.workflow.RunService/AbortAction" RunService_WatchGroups_FullMethodName = "/flyteidl2.workflow.RunService/WatchGroups" + RunService_GetActionDataURIs_FullMethodName = "/flyteidl2.workflow.RunService/GetActionDataURIs" ) // RunServiceClient is the client API for RunService service. @@ -51,7 +52,8 @@ type RunServiceClient interface { GetActionDetails(ctx context.Context, in *GetActionDetailsRequest, opts ...grpc.CallOption) (*GetActionDetailsResponse, error) // Stream detailed information updates about an action. The call will terminate when the action reaches a terminal phase. WatchActionDetails(ctx context.Context, in *WatchActionDetailsRequest, opts ...grpc.CallOption) (RunService_WatchActionDetailsClient, error) - // Get input and output for an action. + // Deprecated: Do not use. + // Deprecated: Use DataProxyService.GetActionData instead. GetActionData(ctx context.Context, in *GetActionDataRequest, opts ...grpc.CallOption) (*GetActionDataResponse, error) // List runs based on the provided filter criteria. ListRuns(ctx context.Context, in *ListRunsRequest, opts ...grpc.CallOption) (*ListRunsResponse, error) @@ -69,6 +71,8 @@ type RunServiceClient interface { AbortAction(ctx context.Context, in *AbortActionRequest, opts ...grpc.CallOption) (*AbortActionResponse, error) // Stream updates for task groups based on the provided filter criteria. WatchGroups(ctx context.Context, in *WatchGroupsRequest, opts ...grpc.CallOption) (RunService_WatchGroupsClient, error) + // Get the storage URIs for an action's input and output data. + GetActionDataURIs(ctx context.Context, in *GetActionDataURIsRequest, opts ...grpc.CallOption) (*GetActionDataURIsResponse, error) } type runServiceClient struct { @@ -179,6 +183,7 @@ func (x *runServiceWatchActionDetailsClient) Recv() (*WatchActionDetailsResponse return m, nil } +// Deprecated: Do not use. func (c *runServiceClient) GetActionData(ctx context.Context, in *GetActionDataRequest, opts ...grpc.CallOption) (*GetActionDataResponse, error) { out := new(GetActionDataResponse) err := c.cc.Invoke(ctx, RunService_GetActionData_FullMethodName, in, out, opts...) @@ -343,6 +348,15 @@ func (x *runServiceWatchGroupsClient) Recv() (*WatchGroupsResponse, error) { return m, nil } +func (c *runServiceClient) GetActionDataURIs(ctx context.Context, in *GetActionDataURIsRequest, opts ...grpc.CallOption) (*GetActionDataURIsResponse, error) { + out := new(GetActionDataURIsResponse) + err := c.cc.Invoke(ctx, RunService_GetActionDataURIs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RunServiceServer is the server API for RunService service. // All implementations should embed UnimplementedRunServiceServer // for forward compatibility @@ -359,7 +373,8 @@ type RunServiceServer interface { GetActionDetails(context.Context, *GetActionDetailsRequest) (*GetActionDetailsResponse, error) // Stream detailed information updates about an action. The call will terminate when the action reaches a terminal phase. WatchActionDetails(*WatchActionDetailsRequest, RunService_WatchActionDetailsServer) error - // Get input and output for an action. + // Deprecated: Do not use. + // Deprecated: Use DataProxyService.GetActionData instead. GetActionData(context.Context, *GetActionDataRequest) (*GetActionDataResponse, error) // List runs based on the provided filter criteria. ListRuns(context.Context, *ListRunsRequest) (*ListRunsResponse, error) @@ -377,6 +392,8 @@ type RunServiceServer interface { AbortAction(context.Context, *AbortActionRequest) (*AbortActionResponse, error) // Stream updates for task groups based on the provided filter criteria. WatchGroups(*WatchGroupsRequest, RunService_WatchGroupsServer) error + // Get the storage URIs for an action's input and output data. + GetActionDataURIs(context.Context, *GetActionDataURIsRequest) (*GetActionDataURIsResponse, error) } // UnimplementedRunServiceServer should be embedded to have forward compatible implementations. @@ -425,6 +442,9 @@ func (UnimplementedRunServiceServer) AbortAction(context.Context, *AbortActionRe func (UnimplementedRunServiceServer) WatchGroups(*WatchGroupsRequest, RunService_WatchGroupsServer) error { return status.Errorf(codes.Unimplemented, "method WatchGroups not implemented") } +func (UnimplementedRunServiceServer) GetActionDataURIs(context.Context, *GetActionDataURIsRequest) (*GetActionDataURIsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetActionDataURIs not implemented") +} // UnsafeRunServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RunServiceServer will @@ -707,6 +727,24 @@ func (x *runServiceWatchGroupsServer) Send(m *WatchGroupsResponse) error { return x.ServerStream.SendMsg(m) } +func _RunService_GetActionDataURIs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetActionDataURIsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RunServiceServer).GetActionDataURIs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RunService_GetActionDataURIs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RunServiceServer).GetActionDataURIs(ctx, req.(*GetActionDataURIsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // RunService_ServiceDesc is the grpc.ServiceDesc for RunService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -746,6 +784,10 @@ var RunService_ServiceDesc = grpc.ServiceDesc{ MethodName: "AbortAction", Handler: _RunService_AbortAction_Handler, }, + { + MethodName: "GetActionDataURIs", + Handler: _RunService_GetActionDataURIs_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go b/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go index 13a5c44f2a..186d0449a2 100644 --- a/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go +++ b/gen/go/flyteidl2/workflow/workflowconnect/mocks/mocks.go @@ -1940,6 +1940,74 @@ func (_c *RunServiceClient_GetActionData_Call) RunAndReturn(run func(context1 co return _c } +// GetActionDataURIs provides a mock function for the type RunServiceClient +func (_mock *RunServiceClient) GetActionDataURIs(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) { + ret := _mock.Called(context1, request) + + if len(ret) == 0 { + panic("no return value specified for GetActionDataURIs") + } + + var r0 *connect.Response[workflow.GetActionDataURIsResponse] + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error)); ok { + return returnFunc(context1, request) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) *connect.Response[workflow.GetActionDataURIsResponse]); ok { + r0 = returnFunc(context1, request) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[workflow.GetActionDataURIsResponse]) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) error); ok { + r1 = returnFunc(context1, request) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// RunServiceClient_GetActionDataURIs_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetActionDataURIs' +type RunServiceClient_GetActionDataURIs_Call struct { + *mock.Call +} + +// GetActionDataURIs is a helper method to define mock.On call +// - context1 context.Context +// - request *connect.Request[workflow.GetActionDataURIsRequest] +func (_e *RunServiceClient_Expecter) GetActionDataURIs(context1 interface{}, request interface{}) *RunServiceClient_GetActionDataURIs_Call { + return &RunServiceClient_GetActionDataURIs_Call{Call: _e.mock.On("GetActionDataURIs", context1, request)} +} + +func (_c *RunServiceClient_GetActionDataURIs_Call) Run(run func(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest])) *RunServiceClient_GetActionDataURIs_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *connect.Request[workflow.GetActionDataURIsRequest] + if args[1] != nil { + arg1 = args[1].(*connect.Request[workflow.GetActionDataURIsRequest]) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *RunServiceClient_GetActionDataURIs_Call) Return(response *connect.Response[workflow.GetActionDataURIsResponse], err error) *RunServiceClient_GetActionDataURIs_Call { + _c.Call.Return(response, err) + return _c +} + +func (_c *RunServiceClient_GetActionDataURIs_Call) RunAndReturn(run func(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error)) *RunServiceClient_GetActionDataURIs_Call { + _c.Call.Return(run) + return _c +} + // GetActionDetails provides a mock function for the type RunServiceClient func (_mock *RunServiceClient) GetActionDetails(context1 context.Context, request *connect.Request[workflow.GetActionDetailsRequest]) (*connect.Response[workflow.GetActionDetailsResponse], error) { ret := _mock.Called(context1, request) @@ -2919,6 +2987,74 @@ func (_c *RunServiceHandler_GetActionData_Call) RunAndReturn(run func(context1 c return _c } +// GetActionDataURIs provides a mock function for the type RunServiceHandler +func (_mock *RunServiceHandler) GetActionDataURIs(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) { + ret := _mock.Called(context1, request) + + if len(ret) == 0 { + panic("no return value specified for GetActionDataURIs") + } + + var r0 *connect.Response[workflow.GetActionDataURIsResponse] + var r1 error + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error)); ok { + return returnFunc(context1, request) + } + if returnFunc, ok := ret.Get(0).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) *connect.Response[workflow.GetActionDataURIsResponse]); ok { + r0 = returnFunc(context1, request) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*connect.Response[workflow.GetActionDataURIsResponse]) + } + } + if returnFunc, ok := ret.Get(1).(func(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) error); ok { + r1 = returnFunc(context1, request) + } else { + r1 = ret.Error(1) + } + return r0, r1 +} + +// RunServiceHandler_GetActionDataURIs_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetActionDataURIs' +type RunServiceHandler_GetActionDataURIs_Call struct { + *mock.Call +} + +// GetActionDataURIs is a helper method to define mock.On call +// - context1 context.Context +// - request *connect.Request[workflow.GetActionDataURIsRequest] +func (_e *RunServiceHandler_Expecter) GetActionDataURIs(context1 interface{}, request interface{}) *RunServiceHandler_GetActionDataURIs_Call { + return &RunServiceHandler_GetActionDataURIs_Call{Call: _e.mock.On("GetActionDataURIs", context1, request)} +} + +func (_c *RunServiceHandler_GetActionDataURIs_Call) Run(run func(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest])) *RunServiceHandler_GetActionDataURIs_Call { + _c.Call.Run(func(args mock.Arguments) { + var arg0 context.Context + if args[0] != nil { + arg0 = args[0].(context.Context) + } + var arg1 *connect.Request[workflow.GetActionDataURIsRequest] + if args[1] != nil { + arg1 = args[1].(*connect.Request[workflow.GetActionDataURIsRequest]) + } + run( + arg0, + arg1, + ) + }) + return _c +} + +func (_c *RunServiceHandler_GetActionDataURIs_Call) Return(response *connect.Response[workflow.GetActionDataURIsResponse], err error) *RunServiceHandler_GetActionDataURIs_Call { + _c.Call.Return(response, err) + return _c +} + +func (_c *RunServiceHandler_GetActionDataURIs_Call) RunAndReturn(run func(context1 context.Context, request *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error)) *RunServiceHandler_GetActionDataURIs_Call { + _c.Call.Return(run) + return _c +} + // GetActionDetails provides a mock function for the type RunServiceHandler func (_mock *RunServiceHandler) GetActionDetails(context1 context.Context, request *connect.Request[workflow.GetActionDetailsRequest]) (*connect.Response[workflow.GetActionDetailsResponse], error) { ret := _mock.Called(context1, request) diff --git a/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go b/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go index 27b912fb42..0135cedab6 100644 --- a/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go +++ b/gen/go/flyteidl2/workflow/workflowconnect/run_service.connect.go @@ -67,6 +67,9 @@ const ( RunServiceAbortActionProcedure = "/flyteidl2.workflow.RunService/AbortAction" // RunServiceWatchGroupsProcedure is the fully-qualified name of the RunService's WatchGroups RPC. RunServiceWatchGroupsProcedure = "/flyteidl2.workflow.RunService/WatchGroups" + // RunServiceGetActionDataURIsProcedure is the fully-qualified name of the RunService's + // GetActionDataURIs RPC. + RunServiceGetActionDataURIsProcedure = "/flyteidl2.workflow.RunService/GetActionDataURIs" ) // These variables are the protoreflect.Descriptor objects for the RPCs defined in this package. @@ -86,6 +89,7 @@ var ( runServiceWatchClusterEventsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchClusterEvents") runServiceAbortActionMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("AbortAction") runServiceWatchGroupsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("WatchGroups") + runServiceGetActionDataURIsMethodDescriptor = runServiceServiceDescriptor.Methods().ByName("GetActionDataURIs") ) // RunServiceClient is a client for the flyteidl2.workflow.RunService service. @@ -102,7 +106,9 @@ type RunServiceClient interface { GetActionDetails(context.Context, *connect.Request[workflow.GetActionDetailsRequest]) (*connect.Response[workflow.GetActionDetailsResponse], error) // Stream detailed information updates about an action. The call will terminate when the action reaches a terminal phase. WatchActionDetails(context.Context, *connect.Request[workflow.WatchActionDetailsRequest]) (*connect.ServerStreamForClient[workflow.WatchActionDetailsResponse], error) - // Get input and output for an action. + // Deprecated: Use DataProxyService.GetActionData instead. + // + // Deprecated: do not use. GetActionData(context.Context, *connect.Request[workflow.GetActionDataRequest]) (*connect.Response[workflow.GetActionDataResponse], error) // List runs based on the provided filter criteria. ListRuns(context.Context, *connect.Request[workflow.ListRunsRequest]) (*connect.Response[workflow.ListRunsResponse], error) @@ -120,6 +126,8 @@ type RunServiceClient interface { AbortAction(context.Context, *connect.Request[workflow.AbortActionRequest]) (*connect.Response[workflow.AbortActionResponse], error) // Stream updates for task groups based on the provided filter criteria. WatchGroups(context.Context, *connect.Request[workflow.WatchGroupsRequest]) (*connect.ServerStreamForClient[workflow.WatchGroupsResponse], error) + // Get the storage URIs for an action's input and output data. + GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) } // NewRunServiceClient constructs a client for the flyteidl2.workflow.RunService service. By @@ -221,6 +229,13 @@ func NewRunServiceClient(httpClient connect.HTTPClient, baseURL string, opts ... connect.WithSchema(runServiceWatchGroupsMethodDescriptor), connect.WithClientOptions(opts...), ), + getActionDataURIs: connect.NewClient[workflow.GetActionDataURIsRequest, workflow.GetActionDataURIsResponse]( + httpClient, + baseURL+RunServiceGetActionDataURIsProcedure, + connect.WithSchema(runServiceGetActionDataURIsMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), } } @@ -240,6 +255,7 @@ type runServiceClient struct { watchClusterEvents *connect.Client[workflow.WatchClusterEventsRequest, workflow.WatchClusterEventsResponse] abortAction *connect.Client[workflow.AbortActionRequest, workflow.AbortActionResponse] watchGroups *connect.Client[workflow.WatchGroupsRequest, workflow.WatchGroupsResponse] + getActionDataURIs *connect.Client[workflow.GetActionDataURIsRequest, workflow.GetActionDataURIsResponse] } // CreateRun calls flyteidl2.workflow.RunService.CreateRun. @@ -273,6 +289,8 @@ func (c *runServiceClient) WatchActionDetails(ctx context.Context, req *connect. } // GetActionData calls flyteidl2.workflow.RunService.GetActionData. +// +// Deprecated: do not use. func (c *runServiceClient) GetActionData(ctx context.Context, req *connect.Request[workflow.GetActionDataRequest]) (*connect.Response[workflow.GetActionDataResponse], error) { return c.getActionData.CallUnary(ctx, req) } @@ -312,6 +330,11 @@ func (c *runServiceClient) WatchGroups(ctx context.Context, req *connect.Request return c.watchGroups.CallServerStream(ctx, req) } +// GetActionDataURIs calls flyteidl2.workflow.RunService.GetActionDataURIs. +func (c *runServiceClient) GetActionDataURIs(ctx context.Context, req *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) { + return c.getActionDataURIs.CallUnary(ctx, req) +} + // RunServiceHandler is an implementation of the flyteidl2.workflow.RunService service. type RunServiceHandler interface { // Create a new run of the given task. @@ -326,7 +349,9 @@ type RunServiceHandler interface { GetActionDetails(context.Context, *connect.Request[workflow.GetActionDetailsRequest]) (*connect.Response[workflow.GetActionDetailsResponse], error) // Stream detailed information updates about an action. The call will terminate when the action reaches a terminal phase. WatchActionDetails(context.Context, *connect.Request[workflow.WatchActionDetailsRequest], *connect.ServerStream[workflow.WatchActionDetailsResponse]) error - // Get input and output for an action. + // Deprecated: Use DataProxyService.GetActionData instead. + // + // Deprecated: do not use. GetActionData(context.Context, *connect.Request[workflow.GetActionDataRequest]) (*connect.Response[workflow.GetActionDataResponse], error) // List runs based on the provided filter criteria. ListRuns(context.Context, *connect.Request[workflow.ListRunsRequest]) (*connect.Response[workflow.ListRunsResponse], error) @@ -344,6 +369,8 @@ type RunServiceHandler interface { AbortAction(context.Context, *connect.Request[workflow.AbortActionRequest]) (*connect.Response[workflow.AbortActionResponse], error) // Stream updates for task groups based on the provided filter criteria. WatchGroups(context.Context, *connect.Request[workflow.WatchGroupsRequest], *connect.ServerStream[workflow.WatchGroupsResponse]) error + // Get the storage URIs for an action's input and output data. + GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) } // NewRunServiceHandler builds an HTTP handler from the service implementation. It returns the path @@ -441,6 +468,13 @@ func NewRunServiceHandler(svc RunServiceHandler, opts ...connect.HandlerOption) connect.WithSchema(runServiceWatchGroupsMethodDescriptor), connect.WithHandlerOptions(opts...), ) + runServiceGetActionDataURIsHandler := connect.NewUnaryHandler( + RunServiceGetActionDataURIsProcedure, + svc.GetActionDataURIs, + connect.WithSchema(runServiceGetActionDataURIsMethodDescriptor), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) return "/flyteidl2.workflow.RunService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case RunServiceCreateRunProcedure: @@ -471,6 +505,8 @@ func NewRunServiceHandler(svc RunServiceHandler, opts ...connect.HandlerOption) runServiceAbortActionHandler.ServeHTTP(w, r) case RunServiceWatchGroupsProcedure: runServiceWatchGroupsHandler.ServeHTTP(w, r) + case RunServiceGetActionDataURIsProcedure: + runServiceGetActionDataURIsHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -535,3 +571,7 @@ func (UnimplementedRunServiceHandler) AbortAction(context.Context, *connect.Requ func (UnimplementedRunServiceHandler) WatchGroups(context.Context, *connect.Request[workflow.WatchGroupsRequest], *connect.ServerStream[workflow.WatchGroupsResponse]) error { return connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.workflow.RunService.WatchGroups is not implemented")) } + +func (UnimplementedRunServiceHandler) GetActionDataURIs(context.Context, *connect.Request[workflow.GetActionDataURIsRequest]) (*connect.Response[workflow.GetActionDataURIsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("flyteidl2.workflow.RunService.GetActionDataURIs is not implemented")) +} diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py index 8b8b61b466..1a48b7605c 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_connect.py @@ -23,6 +23,9 @@ async def create_upload_location(self, request: flyteidl2_dot_dataproxy_dot_data async def upload_inputs(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def get_action_data(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + class DataProxyServiceASGIApplication(ConnectASGIApplication[DataProxyService]): def __init__(self, service: DataProxyService | AsyncGenerator[DataProxyService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: @@ -49,6 +52,16 @@ def __init__(self, service: DataProxyService | AsyncGenerator[DataProxyService], ), function=svc.upload_inputs, ), + "/flyteidl2.dataproxy.DataProxyService/GetActionData": Endpoint.unary( + method=MethodInfo( + name="GetActionData", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=svc.get_action_data, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -102,12 +115,36 @@ async def upload_inputs( timeout_ms=timeout_ms, ) + async def get_action_data( + self, + request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionData", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) + class DataProxyServiceSync(Protocol): def create_upload_location(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.CreateUploadLocationRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.CreateUploadLocationResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def upload_inputs(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_action_data(self, request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, ctx: RequestContext) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class DataProxyServiceWSGIApplication(ConnectWSGIApplication): @@ -134,6 +171,16 @@ def __init__(self, service: DataProxyServiceSync, interceptors: Iterable[Interce ), function=service.upload_inputs, ), + "/flyteidl2.dataproxy.DataProxyService/GetActionData": EndpointSync.unary( + method=MethodInfo( + name="GetActionData", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=service.get_action_data, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -186,3 +233,25 @@ def upload_inputs( headers=headers, timeout_ms=timeout_ms, ) + + def get_action_data( + self, + request: flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionData", + service_name="flyteidl2.dataproxy.DataProxyService", + input=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest, + output=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py index ef1bbf81fd..df601f94fd 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.py @@ -22,7 +22,7 @@ from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+flyteidl2/dataproxy/dataproxy_service.proto\x12\x13\x66lyteidl2.dataproxy\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a$flyteidl2/task/task_definition.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xf8\x02\n\x1b\x43reateUploadLocationRequest\x12!\n\x07project\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07project\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12(\n\x0b\x63ontent_md5\x18\x05 \x01(\x0c\x42\x07\xbaH\x04z\x02h\x10R\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\x12%\n\x0e\x63ontent_length\x18\t \x01(\x03R\rcontentLength\"\xad\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12X\n\x07headers\x18\x04 \x03(\x0b\x32>.flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x99\x03\n\x13UploadInputsRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x02 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x03 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x04 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x05 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12.\n\x06inputs\x18\x06 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputsB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\"n\n\x14UploadInputsResponse\x12V\n\x14offloaded_input_data\x18\x01 \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataR\x12offloadedInputData2\xeb\x04\n\x10\x44\x61taProxyService\x12\xa0\x02\n\x14\x43reateUploadLocation\x12\x30.flyteidl2.dataproxy.CreateUploadLocationRequest\x1a\x31.flyteidl2.dataproxy.CreateUploadLocationResponse\"\xa2\x01\x92\x41M\x1aKCreates a write-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02L\"\x1e/api/v1/dataproxy/artifact_urn:\x01*Z\'\"\"/api/v1/org/dataproxy/artifact_urn:\x01*\x12\xb3\x02\n\x0cUploadInputs\x12(.flyteidl2.dataproxy.UploadInputsRequest\x1a).flyteidl2.dataproxy.UploadInputsResponse\"\xcd\x01\x92\x41\x83\x01\x1a\x80\x01Uploads inputs for a given run or project and returns a URI and cache key that can be used to reference these inputs at runtime.\x82\xd3\xe4\x93\x02@\"\x18/api/v1/dataproxy/inputs:\x01*Z!\"\x1c/api/v1/org/dataproxy/inputs:\x01*B\xd8\x01\n\x17\x63om.flyteidl2.dataproxyB\x15\x44\x61taproxyServiceProtoH\x02P\x01Z7github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy\xa2\x02\x03\x46\x44X\xaa\x02\x13\x46lyteidl2.Dataproxy\xca\x02\x13\x46lyteidl2\\Dataproxy\xe2\x02\x1f\x46lyteidl2\\Dataproxy\\GPBMetadata\xea\x02\x14\x46lyteidl2::Dataproxyb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+flyteidl2/dataproxy/dataproxy_service.proto\x12\x13\x66lyteidl2.dataproxy\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a$flyteidl2/task/task_definition.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xf8\x02\n\x1b\x43reateUploadLocationRequest\x12!\n\x07project\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07project\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x06\x64omain\x12\x1a\n\x08\x66ilename\x18\x03 \x01(\tR\x08\x66ilename\x12\x38\n\nexpires_in\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\texpiresIn\x12(\n\x0b\x63ontent_md5\x18\x05 \x01(\x0c\x42\x07\xbaH\x04z\x02h\x10R\ncontentMd5\x12#\n\rfilename_root\x18\x06 \x01(\tR\x0c\x66ilenameRoot\x12\x37\n\x18\x61\x64\x64_content_md5_metadata\x18\x07 \x01(\x08R\x15\x61\x64\x64\x43ontentMd5Metadata\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\x12%\n\x0e\x63ontent_length\x18\t \x01(\x03R\rcontentLength\"\xad\x02\n\x1c\x43reateUploadLocationResponse\x12\x1d\n\nsigned_url\x18\x01 \x01(\tR\tsignedUrl\x12\x1d\n\nnative_url\x18\x02 \x01(\tR\tnativeUrl\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12X\n\x07headers\x18\x04 \x03(\x0b\x32>.flyteidl2.dataproxy.CreateUploadLocationResponse.HeadersEntryR\x07headers\x1a:\n\x0cHeadersEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x99\x03\n\x13UploadInputsRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x02 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x03 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x04 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x05 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12.\n\x06inputs\x18\x06 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputsB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\"n\n\x14UploadInputsResponse\x12V\n\x14offloaded_input_data\x18\x01 \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataR\x12offloadedInputData\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs2\xd8\x05\n\x10\x44\x61taProxyService\x12\xa0\x02\n\x14\x43reateUploadLocation\x12\x30.flyteidl2.dataproxy.CreateUploadLocationRequest\x1a\x31.flyteidl2.dataproxy.CreateUploadLocationResponse\"\xa2\x01\x92\x41M\x1aKCreates a write-only http location that is accessible for tasks at runtime.\x82\xd3\xe4\x93\x02L\"\x1e/api/v1/dataproxy/artifact_urn:\x01*Z\'\"\"/api/v1/org/dataproxy/artifact_urn:\x01*\x12\xb3\x02\n\x0cUploadInputs\x12(.flyteidl2.dataproxy.UploadInputsRequest\x1a).flyteidl2.dataproxy.UploadInputsResponse\"\xcd\x01\x92\x41\x83\x01\x1a\x80\x01Uploads inputs for a given run or project and returns a URI and cache key that can be used to reference these inputs at runtime.\x82\xd3\xe4\x93\x02@\"\x18/api/v1/dataproxy/inputs:\x01*Z!\"\x1c/api/v1/org/dataproxy/inputs:\x01*\x12k\n\rGetActionData\x12).flyteidl2.dataproxy.GetActionDataRequest\x1a*.flyteidl2.dataproxy.GetActionDataResponse\"\x03\x90\x02\x01\x42\xd8\x01\n\x17\x63om.flyteidl2.dataproxyB\x15\x44\x61taproxyServiceProtoH\x02P\x01Z7github.com/flyteorg/flyte/v2/gen/go/flyteidl2/dataproxy\xa2\x02\x03\x46\x44X\xaa\x02\x13\x46lyteidl2.Dataproxy\xca\x02\x13\x46lyteidl2\\Dataproxy\xe2\x02\x1f\x46lyteidl2\\Dataproxy\\GPBMetadata\xea\x02\x14\x46lyteidl2::Dataproxyb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,10 +42,14 @@ _UPLOADINPUTSREQUEST.oneofs_by_name['id']._serialized_options = b'\272H\002\010\001' _UPLOADINPUTSREQUEST.oneofs_by_name['task']._options = None _UPLOADINPUTSREQUEST.oneofs_by_name['task']._serialized_options = b'\272H\002\010\001' + _GETACTIONDATAREQUEST.fields_by_name['action_id']._options = None + _GETACTIONDATAREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' _DATAPROXYSERVICE.methods_by_name['CreateUploadLocation']._options = None _DATAPROXYSERVICE.methods_by_name['CreateUploadLocation']._serialized_options = b'\222AM\032KCreates a write-only http location that is accessible for tasks at runtime.\202\323\344\223\002L\"\036/api/v1/dataproxy/artifact_urn:\001*Z\'\"\"/api/v1/org/dataproxy/artifact_urn:\001*' _DATAPROXYSERVICE.methods_by_name['UploadInputs']._options = None _DATAPROXYSERVICE.methods_by_name['UploadInputs']._serialized_options = b'\222A\203\001\032\200\001Uploads inputs for a given run or project and returns a URI and cache key that can be used to reference these inputs at runtime.\202\323\344\223\002@\"\030/api/v1/dataproxy/inputs:\001*Z!\"\034/api/v1/org/dataproxy/inputs:\001*' + _DATAPROXYSERVICE.methods_by_name['GetActionData']._options = None + _DATAPROXYSERVICE.methods_by_name['GetActionData']._serialized_options = b'\220\002\001' _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_start=371 _globals['_CREATEUPLOADLOCATIONREQUEST']._serialized_end=747 _globals['_CREATEUPLOADLOCATIONRESPONSE']._serialized_start=750 @@ -56,6 +60,10 @@ _globals['_UPLOADINPUTSREQUEST']._serialized_end=1463 _globals['_UPLOADINPUTSRESPONSE']._serialized_start=1465 _globals['_UPLOADINPUTSRESPONSE']._serialized_end=1575 - _globals['_DATAPROXYSERVICE']._serialized_start=1578 - _globals['_DATAPROXYSERVICE']._serialized_end=2197 + _globals['_GETACTIONDATAREQUEST']._serialized_start=1577 + _globals['_GETACTIONDATAREQUEST']._serialized_end=1672 + _globals['_GETACTIONDATARESPONSE']._serialized_start=1674 + _globals['_GETACTIONDATARESPONSE']._serialized_end=1796 + _globals['_DATAPROXYSERVICE']._serialized_start=1799 + _globals['_DATAPROXYSERVICE']._serialized_end=2527 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi index ad179c2207..c37ecd3feb 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2.pyi @@ -76,3 +76,17 @@ class UploadInputsResponse(_message.Message): OFFLOADED_INPUT_DATA_FIELD_NUMBER: _ClassVar[int] offloaded_input_data: _run_pb2.OffloadedInputData def __init__(self, offloaded_input_data: _Optional[_Union[_run_pb2.OffloadedInputData, _Mapping]] = ...) -> None: ... + +class GetActionDataRequest(_message.Message): + __slots__ = ["action_id"] + ACTION_ID_FIELD_NUMBER: _ClassVar[int] + action_id: _identifier_pb2.ActionIdentifier + def __init__(self, action_id: _Optional[_Union[_identifier_pb2.ActionIdentifier, _Mapping]] = ...) -> None: ... + +class GetActionDataResponse(_message.Message): + __slots__ = ["inputs", "outputs"] + INPUTS_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_FIELD_NUMBER: _ClassVar[int] + inputs: _common_pb2.Inputs + outputs: _common_pb2.Outputs + def __init__(self, inputs: _Optional[_Union[_common_pb2.Inputs, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.Outputs, _Mapping]] = ...) -> None: ... diff --git a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py index 44cd7950cc..00caaeb8c0 100644 --- a/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py +++ b/gen/python/flyteidl2/dataproxy/dataproxy_service_pb2_grpc.py @@ -25,6 +25,11 @@ def __init__(self, channel): request_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsRequest.SerializeToString, response_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsResponse.FromString, ) + self.GetActionData = channel.unary_unary( + '/flyteidl2.dataproxy.DataProxyService/GetActionData', + request_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest.SerializeToString, + response_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.FromString, + ) class DataProxyServiceServicer(object): @@ -44,6 +49,13 @@ def UploadInputs(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetActionData(self, request, context): + """Get input and output data for an action. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_DataProxyServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -57,6 +69,11 @@ def add_DataProxyServiceServicer_to_server(servicer, server): request_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsRequest.FromString, response_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsResponse.SerializeToString, ), + 'GetActionData': grpc.unary_unary_rpc_method_handler( + servicer.GetActionData, + request_deserializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest.FromString, + response_serializer=flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flyteidl2.dataproxy.DataProxyService', rpc_method_handlers) @@ -101,3 +118,20 @@ def UploadInputs(request, flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.UploadInputsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetActionData(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl2.dataproxy.DataProxyService/GetActionData', + flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataRequest.SerializeToString, + flyteidl2_dot_dataproxy_dot_dataproxy__service__pb2.GetActionDataResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/python/flyteidl2/workflow/run_service_connect.py b/gen/python/flyteidl2/workflow/run_service_connect.py index b2a7256bbc..feb5785bb8 100644 --- a/gen/python/flyteidl2/workflow/run_service_connect.py +++ b/gen/python/flyteidl2/workflow/run_service_connect.py @@ -59,6 +59,9 @@ async def abort_action(self, request: flyteidl2_dot_workflow_dot_run__service__p def watch_groups(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsRequest, ctx: RequestContext) -> AsyncIterator[flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsResponse]: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + async def get_action_data_u_r_is(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + class RunServiceASGIApplication(ConnectASGIApplication[RunService]): def __init__(self, service: RunService | AsyncGenerator[RunService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: @@ -205,6 +208,16 @@ def __init__(self, service: RunService | AsyncGenerator[RunService], *, intercep ), function=svc.watch_groups, ), + "/flyteidl2.workflow.RunService/GetActionDataURIs": Endpoint.unary( + method=MethodInfo( + name="GetActionDataURIs", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=svc.get_action_data_u_r_is, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -508,6 +521,28 @@ def watch_groups( timeout_ms=timeout_ms, ) + async def get_action_data_u_r_is( + self, + request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionDataURIs", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) + class RunServiceSync(Protocol): def create_run(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.CreateRunRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.CreateRunResponse: @@ -538,6 +573,8 @@ def abort_action(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.Abo raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def watch_groups(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsRequest, ctx: RequestContext) -> Iterator[flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsResponse]: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_action_data_u_r_is(self, request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, ctx: RequestContext) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class RunServiceWSGIApplication(ConnectWSGIApplication): @@ -684,6 +721,16 @@ def __init__(self, service: RunServiceSync, interceptors: Iterable[InterceptorSy ), function=service.watch_groups, ), + "/flyteidl2.workflow.RunService/GetActionDataURIs": EndpointSync.unary( + method=MethodInfo( + name="GetActionDataURIs", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + function=service.get_action_data_u_r_is, + ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -986,3 +1033,25 @@ def watch_groups( headers=headers, timeout_ms=timeout_ms, ) + + def get_action_data_u_r_is( + self, + request: flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + use_get: bool = False, + ) -> flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetActionDataURIs", + service_name="flyteidl2.workflow.RunService", + input=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest, + output=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse, + idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS, + ), + headers=headers, + timeout_ms=timeout_ms, + use_get=use_get, + ) diff --git a/gen/python/flyteidl2/workflow/run_service_pb2.py b/gen/python/flyteidl2/workflow/run_service_pb2.py index 353d0e7aca..9cd6cde18d 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2.py +++ b/gen/python/flyteidl2/workflow/run_service_pb2.py @@ -22,7 +22,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$flyteidl2/workflow/run_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1b\x66lyteidl2/common/list.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a\x18\x66lyteidl2/task/run.proto\x1a$flyteidl2/task/task_definition.proto\x1a\'flyteidl2/workflow/run_definition.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xee\x04\n\x10\x43reateRunRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x06 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x02 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x03 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x07 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12\x30\n\x06inputs\x18\x04 \x01(\x0b\x32\x16.flyteidl2.task.InputsH\x02R\x06inputs\x12X\n\x14offloaded_input_data\x18\t \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataH\x02R\x12offloadedInputData\x12\x32\n\x08run_spec\x18\x05 \x01(\x0b\x32\x17.flyteidl2.task.RunSpecR\x07runSpec\x12\x35\n\x06source\x18\x08 \x01(\x0e\x32\x1d.flyteidl2.workflow.RunSourceR\x06sourceB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\rinput_wrapper\">\n\x11\x43reateRunResponse\x12)\n\x03run\x18\x01 \x01(\x0b\x32\x17.flyteidl2.workflow.RunR\x03run\"y\n\x0f\x41\x62ortRunRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x12\n\x10\x41\x62ortRunResponse\"V\n\x14GetRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"Q\n\x15GetRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"X\n\x16WatchRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"S\n\x17WatchRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"b\n\x17GetActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"W\n\x18GetActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"d\n\x19WatchActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"Y\n\x1aWatchActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs\"\x84\x03\n\x0fListRunsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x42\n\x0ctrigger_name\x18\x06 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x00R\x0btriggerName\x12\x37\n\ttask_name\x18\x07 \x01(\x0b\x32\x18.flyteidl2.task.TaskNameH\x00R\x08taskName\x12\x39\n\x07task_id\x18\x08 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"U\n\x10ListRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x02\n\x10WatchRunsRequest\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\ncluster_id\x18\x03 \x01(\x0b\x32#.flyteidl2.common.ClusterIdentifierH\x00R\tclusterId\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06target\x12\x05\xbaH\x02\x08\x01\"@\n\x11WatchRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\"\x8d\x01\n\x12ListActionsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12>\n\x06run_id\x18\x02 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"a\n\x13ListActionsResponse\x12\x34\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x1a.flyteidl2.workflow.ActionR\x07\x61\x63tions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x01\n\x13WatchActionsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x30\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x18.flyteidl2.common.FilterR\x06\x66ilter\"e\n\x14WatchActionsResponse\x12M\n\x10\x65nriched_actions\x18\x01 \x03(\x0b\x32\".flyteidl2.workflow.EnrichedActionR\x0f\x65nrichedActions\"z\n\x19WatchClusterEventsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"e\n\x1aWatchClusterEventsResponse\x12G\n\x0e\x63luster_events\x18\x01 \x03(\x0b\x32 .flyteidl2.workflow.ClusterEventR\rclusterEvents\"u\n\x12\x41\x62ortActionRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12\x16\n\x06reason\x18\x02 \x01(\tR\x06reason\"\x15\n\x13\x41\x62ortActionResponse\"\xe3\x03\n\x12WatchGroupsRequest\x12\x44\n\nproject_id\x18\x01 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x41\n\nstart_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\tstartDate\x12\x35\n\x08\x65nd_date\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndDate\x12\x37\n\x07request\x18\x04 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x61\n\x11known_sort_fields\x18\x05 \x03(\x0b\x32\x35.flyteidl2.workflow.WatchGroupsRequest.KnownSortFieldR\x0fknownSortFields\x1a^\n\x0eKnownSortField\x12\x41\n\ncreated_at\x18\x01 \x01(\x0e\x32 .flyteidl2.common.Sort.DirectionH\x00R\tcreatedAtB\t\n\x07sort_byB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01\"q\n\x13WatchGroupsResponse\x12>\n\x0btask_groups\x18\x01 \x03(\x0b\x32\x1d.flyteidl2.workflow.TaskGroupR\ntaskGroups\x12\x1a\n\x08sentinel\x18\x02 \x01(\x08R\x08sentinel2\xb9\x0b\n\nRunService\x12Z\n\tCreateRun\x12$.flyteidl2.workflow.CreateRunRequest\x1a%.flyteidl2.workflow.CreateRunResponse\"\x00\x12W\n\x08\x41\x62ortRun\x12#.flyteidl2.workflow.AbortRunRequest\x1a$.flyteidl2.workflow.AbortRunResponse\"\x00\x12i\n\rGetRunDetails\x12(.flyteidl2.workflow.GetRunDetailsRequest\x1a).flyteidl2.workflow.GetRunDetailsResponse\"\x03\x90\x02\x01\x12n\n\x0fWatchRunDetails\x12*.flyteidl2.workflow.WatchRunDetailsRequest\x1a+.flyteidl2.workflow.WatchRunDetailsResponse\"\x00\x30\x01\x12r\n\x10GetActionDetails\x12+.flyteidl2.workflow.GetActionDetailsRequest\x1a,.flyteidl2.workflow.GetActionDetailsResponse\"\x03\x90\x02\x01\x12w\n\x12WatchActionDetails\x12-.flyteidl2.workflow.WatchActionDetailsRequest\x1a..flyteidl2.workflow.WatchActionDetailsResponse\"\x00\x30\x01\x12i\n\rGetActionData\x12(.flyteidl2.workflow.GetActionDataRequest\x1a).flyteidl2.workflow.GetActionDataResponse\"\x03\x90\x02\x01\x12Z\n\x08ListRuns\x12#.flyteidl2.workflow.ListRunsRequest\x1a$.flyteidl2.workflow.ListRunsResponse\"\x03\x90\x02\x01\x12\\\n\tWatchRuns\x12$.flyteidl2.workflow.WatchRunsRequest\x1a%.flyteidl2.workflow.WatchRunsResponse\"\x00\x30\x01\x12\x63\n\x0bListActions\x12&.flyteidl2.workflow.ListActionsRequest\x1a\'.flyteidl2.workflow.ListActionsResponse\"\x03\x90\x02\x01\x12\x65\n\x0cWatchActions\x12\'.flyteidl2.workflow.WatchActionsRequest\x1a(.flyteidl2.workflow.WatchActionsResponse\"\x00\x30\x01\x12w\n\x12WatchClusterEvents\x12-.flyteidl2.workflow.WatchClusterEventsRequest\x1a..flyteidl2.workflow.WatchClusterEventsResponse\"\x00\x30\x01\x12`\n\x0b\x41\x62ortAction\x12&.flyteidl2.workflow.AbortActionRequest\x1a\'.flyteidl2.workflow.AbortActionResponse\"\x00\x12\x62\n\x0bWatchGroups\x12&.flyteidl2.workflow.WatchGroupsRequest\x1a\'.flyteidl2.workflow.WatchGroupsResponse\"\x00\x30\x01\x42\xcc\x01\n\x16\x63om.flyteidl2.workflowB\x0fRunServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$flyteidl2/workflow/run_service.proto\x12\x12\x66lyteidl2.workflow\x1a\x1b\x62uf/validate/validate.proto\x1a!flyteidl2/common/identifier.proto\x1a\x1b\x66lyteidl2/common/list.proto\x1a\x1a\x66lyteidl2/common/run.proto\x1a\x1b\x66lyteidl2/task/common.proto\x1a\x18\x66lyteidl2/task/run.proto\x1a$flyteidl2/task/task_definition.proto\x1a\'flyteidl2/workflow/run_definition.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xee\x04\n\x10\x43reateRunRequest\x12\x38\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierH\x00R\x05runId\x12\x44\n\nproject_id\x18\x06 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x02 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x01R\x06taskId\x12\x37\n\ttask_spec\x18\x03 \x01(\x0b\x32\x18.flyteidl2.task.TaskSpecH\x01R\x08taskSpec\x12\x42\n\x0ctrigger_name\x18\x07 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x01R\x0btriggerName\x12\x30\n\x06inputs\x18\x04 \x01(\x0b\x32\x16.flyteidl2.task.InputsH\x02R\x06inputs\x12X\n\x14offloaded_input_data\x18\t \x01(\x0b\x32$.flyteidl2.common.OffloadedInputDataH\x02R\x12offloadedInputData\x12\x32\n\x08run_spec\x18\x05 \x01(\x0b\x32\x17.flyteidl2.task.RunSpecR\x07runSpec\x12\x35\n\x06source\x18\x08 \x01(\x0e\x32\x1d.flyteidl2.workflow.RunSourceR\x06sourceB\x0b\n\x02id\x12\x05\xbaH\x02\x08\x01\x42\r\n\x04task\x12\x05\xbaH\x02\x08\x01\x42\x0f\n\rinput_wrapper\">\n\x11\x43reateRunResponse\x12)\n\x03run\x18\x01 \x01(\x0b\x32\x17.flyteidl2.workflow.RunR\x03run\"y\n\x0f\x41\x62ortRunRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x1b\n\x06reason\x18\x02 \x01(\tH\x00R\x06reason\x88\x01\x01\x42\t\n\x07_reason\"\x12\n\x10\x41\x62ortRunResponse\"V\n\x14GetRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"Q\n\x15GetRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"X\n\x16WatchRunDetailsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"S\n\x17WatchRunDetailsResponse\x12\x38\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32\x1e.flyteidl2.workflow.RunDetailsR\x07\x64\x65tails\"b\n\x17GetActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"W\n\x18GetActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"d\n\x19WatchActionDetailsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"Y\n\x1aWatchActionDetailsResponse\x12;\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32!.flyteidl2.workflow.ActionDetailsR\x07\x64\x65tails\"_\n\x14GetActionDataRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"z\n\x15GetActionDataResponse\x12.\n\x06inputs\x18\x01 \x01(\x0b\x32\x16.flyteidl2.task.InputsR\x06inputs\x12\x31\n\x07outputs\x18\x02 \x01(\x0b\x32\x17.flyteidl2.task.OutputsR\x07outputs\"c\n\x18GetActionDataURIsRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\"[\n\x19GetActionDataURIsResponse\x12\x1d\n\ninputs_uri\x18\x01 \x01(\tR\tinputsUri\x12\x1f\n\x0boutputs_uri\x18\x02 \x01(\tR\noutputsUri\"\x84\x03\n\x0fListRunsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x42\n\x0ctrigger_name\x18\x06 \x01(\x0b\x32\x1d.flyteidl2.common.TriggerNameH\x00R\x0btriggerName\x12\x37\n\ttask_name\x18\x07 \x01(\x0b\x32\x18.flyteidl2.task.TaskNameH\x00R\x08taskName\x12\x39\n\x07task_id\x18\x08 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01J\x04\x08\x03\x10\x04J\x04\x08\x05\x10\x06\"U\n\x10ListRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x02\n\x10WatchRunsRequest\x12\x1b\n\x03org\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x03org\x12\x44\n\ncluster_id\x18\x03 \x01(\x0b\x32#.flyteidl2.common.ClusterIdentifierH\x00R\tclusterId\x12\x44\n\nproject_id\x18\x04 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x39\n\x07task_id\x18\x05 \x01(\x0b\x32\x1e.flyteidl2.task.TaskIdentifierH\x00R\x06taskIdB\x0f\n\x06target\x12\x05\xbaH\x02\x08\x01\"@\n\x11WatchRunsResponse\x12+\n\x04runs\x18\x01 \x03(\x0b\x32\x17.flyteidl2.workflow.RunR\x04runs\"\x8d\x01\n\x12ListActionsRequest\x12\x37\n\x07request\x18\x01 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12>\n\x06run_id\x18\x02 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\"a\n\x13ListActionsResponse\x12\x34\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x1a.flyteidl2.workflow.ActionR\x07\x61\x63tions\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x87\x01\n\x13WatchActionsRequest\x12>\n\x06run_id\x18\x01 \x01(\x0b\x32\x1f.flyteidl2.common.RunIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x05runId\x12\x30\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x18.flyteidl2.common.FilterR\x06\x66ilter\"e\n\x14WatchActionsResponse\x12M\n\x10\x65nriched_actions\x18\x01 \x03(\x0b\x32\".flyteidl2.workflow.EnrichedActionR\x0f\x65nrichedActions\"z\n\x19WatchClusterEventsRequest\x12:\n\x02id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xbaH\x04*\x02 \x00R\x07\x61ttempt\"e\n\x1aWatchClusterEventsResponse\x12G\n\x0e\x63luster_events\x18\x01 \x03(\x0b\x32 .flyteidl2.workflow.ClusterEventR\rclusterEvents\"u\n\x12\x41\x62ortActionRequest\x12G\n\taction_id\x18\x01 \x01(\x0b\x32\".flyteidl2.common.ActionIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x08\x61\x63tionId\x12\x16\n\x06reason\x18\x02 \x01(\tR\x06reason\"\x15\n\x13\x41\x62ortActionResponse\"\xe3\x03\n\x12WatchGroupsRequest\x12\x44\n\nproject_id\x18\x01 \x01(\x0b\x32#.flyteidl2.common.ProjectIdentifierH\x00R\tprojectId\x12\x41\n\nstart_date\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xbaH\x03\xc8\x01\x01R\tstartDate\x12\x35\n\x08\x65nd_date\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndDate\x12\x37\n\x07request\x18\x04 \x01(\x0b\x32\x1d.flyteidl2.common.ListRequestR\x07request\x12\x61\n\x11known_sort_fields\x18\x05 \x03(\x0b\x32\x35.flyteidl2.workflow.WatchGroupsRequest.KnownSortFieldR\x0fknownSortFields\x1a^\n\x0eKnownSortField\x12\x41\n\ncreated_at\x18\x01 \x01(\x0e\x32 .flyteidl2.common.Sort.DirectionH\x00R\tcreatedAtB\t\n\x07sort_byB\x11\n\x08scope_by\x12\x05\xbaH\x02\x08\x01\"q\n\x13WatchGroupsResponse\x12>\n\x0btask_groups\x18\x01 \x03(\x0b\x32\x1d.flyteidl2.workflow.TaskGroupR\ntaskGroups\x12\x1a\n\x08sentinel\x18\x02 \x01(\x08R\x08sentinel2\xb3\x0c\n\nRunService\x12Z\n\tCreateRun\x12$.flyteidl2.workflow.CreateRunRequest\x1a%.flyteidl2.workflow.CreateRunResponse\"\x00\x12W\n\x08\x41\x62ortRun\x12#.flyteidl2.workflow.AbortRunRequest\x1a$.flyteidl2.workflow.AbortRunResponse\"\x00\x12i\n\rGetRunDetails\x12(.flyteidl2.workflow.GetRunDetailsRequest\x1a).flyteidl2.workflow.GetRunDetailsResponse\"\x03\x90\x02\x01\x12n\n\x0fWatchRunDetails\x12*.flyteidl2.workflow.WatchRunDetailsRequest\x1a+.flyteidl2.workflow.WatchRunDetailsResponse\"\x00\x30\x01\x12r\n\x10GetActionDetails\x12+.flyteidl2.workflow.GetActionDetailsRequest\x1a,.flyteidl2.workflow.GetActionDetailsResponse\"\x03\x90\x02\x01\x12w\n\x12WatchActionDetails\x12-.flyteidl2.workflow.WatchActionDetailsRequest\x1a..flyteidl2.workflow.WatchActionDetailsResponse\"\x00\x30\x01\x12l\n\rGetActionData\x12(.flyteidl2.workflow.GetActionDataRequest\x1a).flyteidl2.workflow.GetActionDataResponse\"\x06\x88\x02\x01\x90\x02\x01\x12Z\n\x08ListRuns\x12#.flyteidl2.workflow.ListRunsRequest\x1a$.flyteidl2.workflow.ListRunsResponse\"\x03\x90\x02\x01\x12\\\n\tWatchRuns\x12$.flyteidl2.workflow.WatchRunsRequest\x1a%.flyteidl2.workflow.WatchRunsResponse\"\x00\x30\x01\x12\x63\n\x0bListActions\x12&.flyteidl2.workflow.ListActionsRequest\x1a\'.flyteidl2.workflow.ListActionsResponse\"\x03\x90\x02\x01\x12\x65\n\x0cWatchActions\x12\'.flyteidl2.workflow.WatchActionsRequest\x1a(.flyteidl2.workflow.WatchActionsResponse\"\x00\x30\x01\x12w\n\x12WatchClusterEvents\x12-.flyteidl2.workflow.WatchClusterEventsRequest\x1a..flyteidl2.workflow.WatchClusterEventsResponse\"\x00\x30\x01\x12`\n\x0b\x41\x62ortAction\x12&.flyteidl2.workflow.AbortActionRequest\x1a\'.flyteidl2.workflow.AbortActionResponse\"\x00\x12\x62\n\x0bWatchGroups\x12&.flyteidl2.workflow.WatchGroupsRequest\x1a\'.flyteidl2.workflow.WatchGroupsResponse\"\x00\x30\x01\x12u\n\x11GetActionDataURIs\x12,.flyteidl2.workflow.GetActionDataURIsRequest\x1a-.flyteidl2.workflow.GetActionDataURIsResponse\"\x03\x90\x02\x01\x42\xcc\x01\n\x16\x63om.flyteidl2.workflowB\x0fRunServiceProtoH\x02P\x01Z6github.com/flyteorg/flyte/v2/gen/go/flyteidl2/workflow\xa2\x02\x03\x46WX\xaa\x02\x12\x46lyteidl2.Workflow\xca\x02\x12\x46lyteidl2\\Workflow\xe2\x02\x1e\x46lyteidl2\\Workflow\\GPBMetadata\xea\x02\x13\x46lyteidl2::Workflowb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -46,6 +46,8 @@ _WATCHACTIONDETAILSREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' _GETACTIONDATAREQUEST.fields_by_name['action_id']._options = None _GETACTIONDATAREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' + _GETACTIONDATAURISREQUEST.fields_by_name['action_id']._options = None + _GETACTIONDATAURISREQUEST.fields_by_name['action_id']._serialized_options = b'\272H\003\310\001\001' _LISTRUNSREQUEST.oneofs_by_name['scope_by']._options = None _LISTRUNSREQUEST.oneofs_by_name['scope_by']._serialized_options = b'\272H\002\010\001' _LISTRUNSREQUEST.fields_by_name['org']._options = None @@ -73,11 +75,13 @@ _RUNSERVICE.methods_by_name['GetActionDetails']._options = None _RUNSERVICE.methods_by_name['GetActionDetails']._serialized_options = b'\220\002\001' _RUNSERVICE.methods_by_name['GetActionData']._options = None - _RUNSERVICE.methods_by_name['GetActionData']._serialized_options = b'\220\002\001' + _RUNSERVICE.methods_by_name['GetActionData']._serialized_options = b'\210\002\001\220\002\001' _RUNSERVICE.methods_by_name['ListRuns']._options = None _RUNSERVICE.methods_by_name['ListRuns']._serialized_options = b'\220\002\001' _RUNSERVICE.methods_by_name['ListActions']._options = None _RUNSERVICE.methods_by_name['ListActions']._serialized_options = b'\220\002\001' + _RUNSERVICE.methods_by_name['GetActionDataURIs']._options = None + _RUNSERVICE.methods_by_name['GetActionDataURIs']._serialized_options = b'\220\002\001' _globals['_CREATERUNREQUEST']._serialized_start=349 _globals['_CREATERUNREQUEST']._serialized_end=971 _globals['_CREATERUNRESPONSE']._serialized_start=973 @@ -106,36 +110,40 @@ _globals['_GETACTIONDATAREQUEST']._serialized_end=2003 _globals['_GETACTIONDATARESPONSE']._serialized_start=2005 _globals['_GETACTIONDATARESPONSE']._serialized_end=2127 - _globals['_LISTRUNSREQUEST']._serialized_start=2130 - _globals['_LISTRUNSREQUEST']._serialized_end=2518 - _globals['_LISTRUNSRESPONSE']._serialized_start=2520 - _globals['_LISTRUNSRESPONSE']._serialized_end=2605 - _globals['_WATCHRUNSREQUEST']._serialized_start=2608 - _globals['_WATCHRUNSREQUEST']._serialized_end=2871 - _globals['_WATCHRUNSRESPONSE']._serialized_start=2873 - _globals['_WATCHRUNSRESPONSE']._serialized_end=2937 - _globals['_LISTACTIONSREQUEST']._serialized_start=2940 - _globals['_LISTACTIONSREQUEST']._serialized_end=3081 - _globals['_LISTACTIONSRESPONSE']._serialized_start=3083 - _globals['_LISTACTIONSRESPONSE']._serialized_end=3180 - _globals['_WATCHACTIONSREQUEST']._serialized_start=3183 - _globals['_WATCHACTIONSREQUEST']._serialized_end=3318 - _globals['_WATCHACTIONSRESPONSE']._serialized_start=3320 - _globals['_WATCHACTIONSRESPONSE']._serialized_end=3421 - _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_start=3423 - _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_end=3545 - _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_start=3547 - _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_end=3648 - _globals['_ABORTACTIONREQUEST']._serialized_start=3650 - _globals['_ABORTACTIONREQUEST']._serialized_end=3767 - _globals['_ABORTACTIONRESPONSE']._serialized_start=3769 - _globals['_ABORTACTIONRESPONSE']._serialized_end=3790 - _globals['_WATCHGROUPSREQUEST']._serialized_start=3793 - _globals['_WATCHGROUPSREQUEST']._serialized_end=4276 - _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_start=4163 - _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_end=4257 - _globals['_WATCHGROUPSRESPONSE']._serialized_start=4278 - _globals['_WATCHGROUPSRESPONSE']._serialized_end=4391 - _globals['_RUNSERVICE']._serialized_start=4394 - _globals['_RUNSERVICE']._serialized_end=5859 + _globals['_GETACTIONDATAURISREQUEST']._serialized_start=2129 + _globals['_GETACTIONDATAURISREQUEST']._serialized_end=2228 + _globals['_GETACTIONDATAURISRESPONSE']._serialized_start=2230 + _globals['_GETACTIONDATAURISRESPONSE']._serialized_end=2321 + _globals['_LISTRUNSREQUEST']._serialized_start=2324 + _globals['_LISTRUNSREQUEST']._serialized_end=2712 + _globals['_LISTRUNSRESPONSE']._serialized_start=2714 + _globals['_LISTRUNSRESPONSE']._serialized_end=2799 + _globals['_WATCHRUNSREQUEST']._serialized_start=2802 + _globals['_WATCHRUNSREQUEST']._serialized_end=3065 + _globals['_WATCHRUNSRESPONSE']._serialized_start=3067 + _globals['_WATCHRUNSRESPONSE']._serialized_end=3131 + _globals['_LISTACTIONSREQUEST']._serialized_start=3134 + _globals['_LISTACTIONSREQUEST']._serialized_end=3275 + _globals['_LISTACTIONSRESPONSE']._serialized_start=3277 + _globals['_LISTACTIONSRESPONSE']._serialized_end=3374 + _globals['_WATCHACTIONSREQUEST']._serialized_start=3377 + _globals['_WATCHACTIONSREQUEST']._serialized_end=3512 + _globals['_WATCHACTIONSRESPONSE']._serialized_start=3514 + _globals['_WATCHACTIONSRESPONSE']._serialized_end=3615 + _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_start=3617 + _globals['_WATCHCLUSTEREVENTSREQUEST']._serialized_end=3739 + _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_start=3741 + _globals['_WATCHCLUSTEREVENTSRESPONSE']._serialized_end=3842 + _globals['_ABORTACTIONREQUEST']._serialized_start=3844 + _globals['_ABORTACTIONREQUEST']._serialized_end=3961 + _globals['_ABORTACTIONRESPONSE']._serialized_start=3963 + _globals['_ABORTACTIONRESPONSE']._serialized_end=3984 + _globals['_WATCHGROUPSREQUEST']._serialized_start=3987 + _globals['_WATCHGROUPSREQUEST']._serialized_end=4470 + _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_start=4357 + _globals['_WATCHGROUPSREQUEST_KNOWNSORTFIELD']._serialized_end=4451 + _globals['_WATCHGROUPSRESPONSE']._serialized_start=4472 + _globals['_WATCHGROUPSRESPONSE']._serialized_end=4585 + _globals['_RUNSERVICE']._serialized_start=4588 + _globals['_RUNSERVICE']._serialized_end=6175 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/flyteidl2/workflow/run_service_pb2.pyi b/gen/python/flyteidl2/workflow/run_service_pb2.pyi index da3294725c..d993da926b 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2.pyi +++ b/gen/python/flyteidl2/workflow/run_service_pb2.pyi @@ -116,6 +116,20 @@ class GetActionDataResponse(_message.Message): outputs: _common_pb2.Outputs def __init__(self, inputs: _Optional[_Union[_common_pb2.Inputs, _Mapping]] = ..., outputs: _Optional[_Union[_common_pb2.Outputs, _Mapping]] = ...) -> None: ... +class GetActionDataURIsRequest(_message.Message): + __slots__ = ["action_id"] + ACTION_ID_FIELD_NUMBER: _ClassVar[int] + action_id: _identifier_pb2.ActionIdentifier + def __init__(self, action_id: _Optional[_Union[_identifier_pb2.ActionIdentifier, _Mapping]] = ...) -> None: ... + +class GetActionDataURIsResponse(_message.Message): + __slots__ = ["inputs_uri", "outputs_uri"] + INPUTS_URI_FIELD_NUMBER: _ClassVar[int] + OUTPUTS_URI_FIELD_NUMBER: _ClassVar[int] + inputs_uri: str + outputs_uri: str + def __init__(self, inputs_uri: _Optional[str] = ..., outputs_uri: _Optional[str] = ...) -> None: ... + class ListRunsRequest(_message.Message): __slots__ = ["request", "org", "project_id", "trigger_name", "task_name", "task_id"] REQUEST_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py b/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py index b80eceb82c..c956ed5c83 100644 --- a/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py +++ b/gen/python/flyteidl2/workflow/run_service_pb2_grpc.py @@ -85,6 +85,11 @@ def __init__(self, channel): request_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsRequest.SerializeToString, response_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsResponse.FromString, ) + self.GetActionDataURIs = channel.unary_unary( + '/flyteidl2.workflow.RunService/GetActionDataURIs', + request_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest.SerializeToString, + response_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.FromString, + ) class RunServiceServicer(object): @@ -134,7 +139,7 @@ def WatchActionDetails(self, request, context): raise NotImplementedError('Method not implemented!') def GetActionData(self, request, context): - """Get input and output for an action. + """Deprecated: Use DataProxyService.GetActionData instead. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -191,6 +196,13 @@ def WatchGroups(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetActionDataURIs(self, request, context): + """Get the storage URIs for an action's input and output data. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_RunServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -264,6 +276,11 @@ def add_RunServiceServicer_to_server(servicer, server): request_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsRequest.FromString, response_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsResponse.SerializeToString, ), + 'GetActionDataURIs': grpc.unary_unary_rpc_method_handler( + servicer.GetActionDataURIs, + request_deserializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest.FromString, + response_serializer=flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'flyteidl2.workflow.RunService', rpc_method_handlers) @@ -512,3 +529,20 @@ def WatchGroups(request, flyteidl2_dot_workflow_dot_run__service__pb2.WatchGroupsResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetActionDataURIs(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/flyteidl2.workflow.RunService/GetActionDataURIs', + flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsRequest.SerializeToString, + flyteidl2_dot_workflow_dot_run__service__pb2.GetActionDataURIsResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/gen/rust/src/flyteidl2.dataproxy.rs b/gen/rust/src/flyteidl2.dataproxy.rs index eb5b6fb5ef..a30f494ff6 100644 --- a/gen/rust/src/flyteidl2.dataproxy.rs +++ b/gen/rust/src/flyteidl2.dataproxy.rs @@ -122,9 +122,30 @@ pub struct UploadInputsResponse { #[prost(message, optional, tag="1")] pub offloaded_input_data: ::core::option::Option, } +/// Request message for querying action data. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionDataRequest { + /// Action to query. + #[prost(message, optional, tag="1")] + pub action_id: ::core::option::Option, +} +/// Response message for querying action data. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionDataResponse { + /// Inputs for the action. + #[prost(message, optional, tag="1")] + pub inputs: ::core::option::Option, + /// Outputs for the action. + #[prost(message, optional, tag="2")] + pub outputs: ::core::option::Option, +} /// Encoded file descriptor set for the `flyteidl2.dataproxy` package pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xea, 0x3a, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, + 0x0a, 0xe7, 0x41, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, @@ -222,379 +243,435 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x65, - 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x32, 0xeb, 0x04, 0x0a, 0x10, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0xa0, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, - 0x92, 0x41, 0x4d, 0x1a, 0x4b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x5a, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, - 0x72, 0x6e, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, - 0x72, 0x6e, 0x12, 0xb3, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcd, 0x01, 0x92, 0x41, 0x83, 0x01, 0x1a, - 0x80, 0x01, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, - 0x20, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x55, 0x52, 0x49, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x5a, 0x21, 0x3a, 0x01, 0x2a, - 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x18, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0xd6, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, - 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xa2, 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, - 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x4a, 0xf1, 0x27, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0x8d, 0x01, 0x01, 0x0a, 0x08, 0x0a, - 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, - 0x1c, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, - 0x00, 0x24, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x25, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, - 0x09, 0x00, 0x26, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x28, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x29, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, 0x12, - 0x03, 0x0c, 0x00, 0x38, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0e, 0x00, 0x4e, 0x0a, 0x09, - 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0e, 0x00, 0x4e, 0x0a, 0x5d, 0x0a, 0x02, 0x06, 0x00, 0x12, - 0x04, 0x11, 0x00, 0x2a, 0x01, 0x1a, 0x51, 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, - 0x03, 0x11, 0x08, 0x18, 0x0a, 0x71, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x13, 0x02, - 0x1d, 0x03, 0x1a, 0x63, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x13, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, - 0x13, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, 0x41, - 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x14, 0x04, 0x1b, 0x06, - 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x14, - 0x04, 0x1b, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x04, 0x12, 0x03, 0x15, 0x06, 0x2c, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, - 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x16, 0x06, 0x0f, 0x0a, 0x13, 0x0a, 0x0b, 0x06, 0x00, 0x02, - 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x12, 0x04, 0x17, 0x06, 0x1a, 0x07, 0x0a, 0x13, - 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x04, 0x12, 0x03, - 0x18, 0x08, 0x32, 0x0a, 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, - 0x0b, 0x00, 0x07, 0x12, 0x03, 0x19, 0x08, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x04, 0x12, 0x04, 0x1c, 0x04, 0xaa, 0x01, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, - 0x92, 0x08, 0x12, 0x04, 0x1c, 0x04, 0xaa, 0x01, 0x0a, 0x10, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, - 0x04, 0x92, 0x08, 0x03, 0x12, 0x04, 0x1c, 0x4e, 0xa8, 0x01, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x01, 0x12, 0x04, 0x1f, 0x02, 0x29, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x1f, 0x06, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, - 0x03, 0x1f, 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1f, - 0x31, 0x45, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x20, 0x04, 0x27, - 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, - 0x20, 0x04, 0x27, 0x06, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x04, 0x12, 0x03, 0x21, 0x06, 0x26, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, - 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, 0x22, 0x06, 0x0f, 0x0a, 0x13, 0x0a, 0x0b, 0x06, 0x00, - 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x12, 0x04, 0x23, 0x06, 0x26, 0x07, 0x0a, - 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x04, 0x12, - 0x03, 0x24, 0x08, 0x2c, 0x0a, 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, - 0x22, 0x0b, 0x00, 0x07, 0x12, 0x03, 0x25, 0x08, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x04, 0x12, 0x04, 0x28, 0x04, 0xdf, 0x01, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, - 0x04, 0x92, 0x08, 0x12, 0x04, 0x28, 0x04, 0xdf, 0x01, 0x0a, 0x10, 0x0a, 0x08, 0x06, 0x00, 0x02, - 0x01, 0x04, 0x92, 0x08, 0x03, 0x12, 0x04, 0x28, 0x4e, 0xdd, 0x01, 0x0a, 0xaa, 0x03, 0x0a, 0x02, - 0x04, 0x00, 0x12, 0x04, 0x31, 0x00, 0x5c, 0x01, 0x1a, 0x9d, 0x03, 0x20, 0x43, 0x72, 0x65, 0x61, + 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5f, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x06, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x32, 0xd8, 0x05, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa0, 0x02, 0x0a, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2d, 0x73, 0x69, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x65, 0x64, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x2e, 0x0a, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, - 0x74, 0x68, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, - 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x28, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x29, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x29, 0x3b, 0x20, 0x4f, 0x52, 0x0a, - 0x20, 0x20, 0x20, 0x2d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x29, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, - 0x03, 0x31, 0x08, 0x23, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x34, 0x02, - 0x3f, 0x1a, 0x37, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, - 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x34, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x34, 0x09, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x34, 0x13, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x34, - 0x15, 0x3e, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, - 0x03, 0x34, 0x16, 0x3d, 0x0a, 0x43, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x38, 0x02, - 0x3e, 0x1a, 0x36, 0x20, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x2b, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x38, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x38, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x38, 0x12, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x08, 0x12, 0x03, 0x38, 0x14, - 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, - 0x38, 0x15, 0x3c, 0x0a, 0xfc, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x3c, 0x02, - 0x16, 0x1a, 0xee, 0x01, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x69, - 0x72, 0x65, 0x64, 0x20, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x45, 0x2e, 0x67, 0x2e, 0x20, 0x60, 0x66, 0x69, 0x6c, - 0x65, 0x2e, 0x70, 0x79, 0x60, 0x20, 0x6f, 0x72, 0x20, 0x60, 0x70, 0x72, 0x65, 0x2f, 0x66, 0x69, - 0x78, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x7a, 0x69, 0x70, 0x60, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x61, 0x73, - 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x3c, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x3c, 0x09, 0x11, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x3c, 0x14, 0x15, 0x0a, 0xe7, 0x01, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x41, 0x02, 0x2a, 0x1a, 0xd9, 0x01, 0x20, 0x45, 0x78, - 0x70, 0x69, 0x72, 0x65, 0x73, 0x49, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6a, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x0a, 0x20, 0x65, - 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x27, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, - 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x72, - 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, - 0x03, 0x41, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x41, - 0x1b, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x41, 0x28, 0x29, - 0x0a, 0xa8, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x46, 0x02, 0x3e, 0x1a, 0x9a, - 0x01, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x44, 0x35, 0x20, 0x72, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x4d, 0x44, 0x35, 0x20, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4d, 0x44, 0x35, - 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, - 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x04, 0x05, 0x12, 0x03, 0x46, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x04, 0x01, 0x12, 0x03, 0x46, 0x08, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, - 0x12, 0x03, 0x46, 0x16, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, 0x03, - 0x46, 0x18, 0x3d, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x02, 0x04, 0x08, 0x87, 0x09, 0x0f, 0x0d, - 0x12, 0x03, 0x46, 0x19, 0x3c, 0x0a, 0xd2, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, - 0x4c, 0x02, 0x1b, 0x1a, 0xc4, 0x02, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x6f, 0x6f, 0x74, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2c, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4d, 0x44, 0x35, - 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, - 0x68, 0x2e, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x0a, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, - 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, - 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x05, 0x05, 0x12, 0x03, 0x4c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, - 0x01, 0x12, 0x03, 0x4c, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, - 0x03, 0x4c, 0x19, 0x1a, 0x0a, 0x89, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x52, - 0x02, 0x24, 0x1a, 0xfb, 0x01, 0x20, 0x49, 0x66, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x61, 0x64, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, - 0x64, 0x35, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x20, 0x55, 0x52, 0x4c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2c, 0x0a, 0x20, 0x66, 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, - 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, - 0x64, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x47, 0x43, 0x50, 0x2c, 0x20, 0x65, 0x6e, 0x73, - 0x75, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x05, 0x12, 0x03, 0x52, 0x02, 0x06, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x52, 0x07, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x52, 0x22, 0x23, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x07, 0x12, 0x03, 0x56, 0x02, 0x11, 0x1a, 0x41, 0x20, 0x4f, 0x72, 0x67, 0x20, 0x69, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x0a, 0x20, - 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x07, 0x05, 0x12, 0x03, 0x56, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, - 0x01, 0x12, 0x03, 0x56, 0x09, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x03, 0x12, - 0x03, 0x56, 0x0f, 0x10, 0x0a, 0xae, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, 0x5b, - 0x02, 0x1b, 0x1a, 0xa0, 0x01, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x20, - 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x27, 0x73, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x66, 0x20, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x05, 0x12, 0x03, - 0x5b, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x5b, 0x08, - 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x5b, 0x19, 0x1a, 0x0a, - 0x63, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x5f, 0x00, 0x6b, 0x01, 0x1a, 0x57, 0x20, 0x43, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, - 0x50, 0x49, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x5f, 0x08, 0x24, - 0x0a, 0x89, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x61, 0x02, 0x18, 0x1a, 0x7c, - 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, - 0x2f, 0x6d, 0x79, 0x2d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x73, 0x33, 0x2e, 0x61, 0x6d, - 0x61, 0x7a, 0x6f, 0x6e, 0x61, 0x77, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x2e, - 0x74, 0x61, 0x72, 0x3f, 0x58, 0x2d, 0x2e, 0x2e, 0x2e, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x61, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x61, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x61, 0x16, 0x17, 0x0a, 0x83, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, - 0x03, 0x64, 0x02, 0x18, 0x1a, 0x76, 0x20, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, - 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x28, 0x65, 0x2e, - 0x67, 0x2e, 0x20, 0x73, 0x33, 0x3a, 0x2f, 0x2f, 0x6d, 0x79, 0x2d, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x2f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x73, - 0x75, 0x66, 0x66, 0x69, 0x78, 0x2e, 0x74, 0x61, 0x72, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x64, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x64, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x64, 0x16, 0x17, 0x0a, 0x41, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, - 0x67, 0x02, 0x2b, 0x1a, 0x34, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x20, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x02, 0x06, 0x12, 0x03, 0x67, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x67, 0x1c, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x67, 0x29, 0x2a, 0x0a, 0x80, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x6a, 0x02, - 0x22, 0x1a, 0x73, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, - 0x03, 0x6a, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x6a, - 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x6a, 0x20, 0x21, - 0x0a, 0x0b, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x05, 0x6d, 0x00, 0x89, 0x01, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x6d, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x08, - 0x00, 0x12, 0x04, 0x6e, 0x02, 0x76, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, - 0x12, 0x03, 0x6e, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x02, 0x12, 0x03, - 0x6f, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, - 0x03, 0x6f, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x72, 0x04, - 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x72, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x72, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x72, 0x22, 0x23, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x75, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x06, 0x12, 0x03, 0x75, 0x04, 0x1c, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x75, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x75, 0x2a, 0x2b, 0x0a, 0xba, 0x01, 0x0a, 0x04, - 0x04, 0x02, 0x08, 0x01, 0x12, 0x05, 0x7a, 0x02, 0x85, 0x01, 0x03, 0x1a, 0xaa, 0x01, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x77, 0x68, - 0x69, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, - 0x6e, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, - 0x01, 0x12, 0x03, 0x7a, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x02, 0x12, - 0x03, 0x7b, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, - 0x12, 0x03, 0x7b, 0x04, 0x30, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x7e, - 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x02, 0x06, 0x12, 0x03, 0x7e, 0x04, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x7e, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x7e, 0x22, 0x23, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x04, 0x81, 0x01, 0x04, - 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, - 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x03, 0x06, 0x12, 0x04, 0x81, 0x01, 0x04, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x03, 0x01, 0x12, 0x04, 0x81, 0x01, 0x12, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, - 0x03, 0x12, 0x04, 0x81, 0x01, 0x1e, 0x1f, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x04, 0x12, - 0x04, 0x84, 0x01, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x06, 0x12, 0x04, 0x84, 0x01, 0x04, 0x16, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x01, 0x12, 0x04, 0x84, 0x01, 0x17, 0x23, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x03, 0x12, 0x04, 0x84, 0x01, 0x26, 0x27, 0x0a, 0x22, - 0x0a, 0x04, 0x04, 0x02, 0x02, 0x05, 0x12, 0x04, 0x88, 0x01, 0x02, 0x19, 0x1a, 0x14, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x06, 0x12, 0x04, 0x88, 0x01, 0x02, - 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x01, 0x12, 0x04, 0x88, 0x01, 0x0e, 0x14, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x03, 0x12, 0x04, 0x88, 0x01, 0x17, 0x18, 0x0a, - 0x0c, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0x8b, 0x01, 0x00, 0x8d, 0x01, 0x01, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x08, 0x1c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x03, - 0x02, 0x00, 0x12, 0x04, 0x8c, 0x01, 0x02, 0x35, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x06, 0x12, 0x04, 0x8c, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, - 0x12, 0x04, 0x8c, 0x01, 0x1c, 0x30, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, - 0x04, 0x8c, 0x01, 0x33, 0x34, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x92, 0x41, 0x4d, + 0x1a, 0x4b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x68, 0x74, 0x74, 0x70, 0x20, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x5a, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x22, + 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6e, 0x12, + 0xb3, 0x02, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcd, 0x01, 0x92, 0x41, 0x83, 0x01, 0x1a, 0x80, 0x01, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x72, + 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x55, 0x52, 0x49, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, + 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x5a, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x18, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x42, 0xd6, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x42, 0x15, + 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0xa2, 0x02, 0x03, 0x46, 0x44, 0x58, 0xaa, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0xca, 0x02, 0x13, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0xe2, 0x02, 0x1f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x44, + 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x4a, 0xa4, 0x2c, 0x0a, 0x07, + 0x12, 0x05, 0x00, 0x00, 0xa1, 0x01, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, + 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1c, 0x0a, 0x09, 0x0a, 0x02, 0x03, + 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, + 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x24, 0x0a, 0x09, 0x0a, 0x02, + 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, + 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, 0x03, 0x09, 0x00, 0x26, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, + 0x0b, 0x00, 0x29, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, 0x12, 0x03, 0x0c, 0x00, 0x38, 0x0a, 0x08, + 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0e, 0x00, 0x4e, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, + 0x0e, 0x00, 0x4e, 0x0a, 0x5d, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x11, 0x00, 0x2f, 0x01, 0x1a, + 0x51, 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x18, 0x0a, 0x71, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x13, 0x02, 0x1d, 0x03, 0x1a, 0x63, 0x20, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6f, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x13, 0x06, 0x1a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x13, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, 0x41, 0x5d, 0x0a, 0x0d, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x14, 0x04, 0x1b, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, 0x00, + 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x14, 0x04, 0x1b, 0x06, 0x0a, 0x11, 0x0a, + 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x15, 0x06, 0x2c, + 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, 0x03, + 0x16, 0x06, 0x0f, 0x0a, 0x13, 0x0a, 0x0b, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, + 0x0b, 0x00, 0x12, 0x04, 0x17, 0x06, 0x1a, 0x07, 0x0a, 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x00, + 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x04, 0x12, 0x03, 0x18, 0x08, 0x32, 0x0a, 0x13, 0x0a, + 0x0c, 0x06, 0x00, 0x02, 0x00, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x07, 0x12, 0x03, 0x19, + 0x08, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x04, 0x1c, 0x04, 0xaa, + 0x01, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x12, 0x04, 0x1c, 0x04, + 0xaa, 0x01, 0x0a, 0x10, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x00, 0x04, 0x92, 0x08, 0x03, 0x12, 0x04, + 0x1c, 0x4e, 0xa8, 0x01, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x1f, 0x02, + 0x29, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1f, 0x06, 0x12, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x1f, 0x13, 0x26, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1f, 0x31, 0x45, 0x0a, 0x0d, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x20, 0x04, 0x27, 0x06, 0x0a, 0x11, 0x0a, 0x09, 0x06, + 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x12, 0x04, 0x20, 0x04, 0x27, 0x06, 0x0a, 0x11, + 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x04, 0x12, 0x03, 0x21, 0x06, + 0x26, 0x0a, 0x11, 0x0a, 0x0a, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x07, 0x12, + 0x03, 0x22, 0x06, 0x0f, 0x0a, 0x13, 0x0a, 0x0b, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, + 0x22, 0x0b, 0x00, 0x12, 0x04, 0x23, 0x06, 0x26, 0x07, 0x0a, 0x13, 0x0a, 0x0c, 0x06, 0x00, 0x02, + 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x04, 0x12, 0x03, 0x24, 0x08, 0x2c, 0x0a, 0x13, + 0x0a, 0x0c, 0x06, 0x00, 0x02, 0x01, 0x04, 0xb0, 0xca, 0xbc, 0x22, 0x0b, 0x00, 0x07, 0x12, 0x03, + 0x25, 0x08, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x04, 0x28, 0x04, + 0xdf, 0x01, 0x0a, 0x0f, 0x0a, 0x07, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x12, 0x04, 0x28, + 0x04, 0xdf, 0x01, 0x0a, 0x10, 0x0a, 0x08, 0x06, 0x00, 0x02, 0x01, 0x04, 0x92, 0x08, 0x03, 0x12, + 0x04, 0x28, 0x4e, 0xdd, 0x01, 0x0a, 0x38, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x2c, + 0x02, 0x2e, 0x03, 0x1a, 0x2a, 0x20, 0x47, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x06, 0x13, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x2c, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2c, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x04, 0x12, 0x03, 0x2d, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x22, 0x12, 0x03, 0x2d, 0x04, 0x2f, 0x0a, 0xaa, 0x03, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x36, + 0x00, 0x61, 0x01, 0x1a, 0x9d, 0x03, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, + 0x73, 0x69, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x3a, 0x0a, 0x20, 0x20, 0x20, + 0x2d, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, + 0x2f, 0x28, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x20, + 0x68, 0x61, 0x73, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x6d, 0x64, 0x35, 0x29, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x69, + 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x29, 0x3b, 0x20, 0x4f, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x20, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2f, 0x66, + 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, + 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x29, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x36, 0x08, 0x23, 0x0a, + 0x44, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x39, 0x02, 0x3f, 0x1a, 0x37, 0x20, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, + 0x39, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x39, 0x09, + 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x39, 0x13, 0x14, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x08, 0x12, 0x03, 0x39, 0x15, 0x3e, 0x0a, 0x10, 0x0a, + 0x09, 0x04, 0x00, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x39, 0x16, 0x3d, 0x0a, + 0x43, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x3d, 0x02, 0x3e, 0x1a, 0x36, 0x20, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3d, + 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3d, 0x09, 0x0f, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3d, 0x12, 0x13, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x08, 0x12, 0x03, 0x3d, 0x14, 0x3d, 0x0a, 0x10, 0x0a, 0x09, + 0x04, 0x00, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x03, 0x3d, 0x15, 0x3c, 0x0a, 0xfc, + 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x41, 0x02, 0x16, 0x1a, 0xee, 0x01, 0x20, + 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x20, 0x73, + 0x75, 0x66, 0x66, 0x69, 0x78, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x20, 0x45, 0x2e, 0x67, 0x2e, 0x20, 0x60, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x79, 0x60, + 0x20, 0x6f, 0x72, 0x20, 0x60, 0x70, 0x72, 0x65, 0x2f, 0x66, 0x69, 0x78, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x2e, 0x7a, 0x69, 0x70, 0x60, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x2e, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x41, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x41, 0x09, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x41, 0x14, 0x15, 0x0a, 0xe7, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, + 0x12, 0x03, 0x46, 0x02, 0x2a, 0x1a, 0xd9, 0x01, 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, + 0x49, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x55, + 0x52, 0x4c, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x0a, 0x20, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x27, 0x73, + 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x46, 0x02, 0x1a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x46, 0x1b, 0x25, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x46, 0x28, 0x29, 0x0a, 0xa8, 0x01, 0x0a, 0x04, + 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x4b, 0x02, 0x3e, 0x1a, 0x9a, 0x01, 0x20, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x44, 0x35, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x4d, 0x44, 0x35, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x64, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4d, 0x44, 0x35, 0x20, 0x68, 0x61, 0x73, 0x68, + 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, + 0x72, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x20, 0x2b, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x05, 0x12, + 0x03, 0x4b, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x4b, + 0x08, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x4b, 0x16, 0x17, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x08, 0x12, 0x03, 0x4b, 0x18, 0x3d, 0x0a, 0x10, + 0x0a, 0x09, 0x04, 0x00, 0x02, 0x04, 0x08, 0x87, 0x09, 0x0f, 0x0d, 0x12, 0x03, 0x4b, 0x19, 0x3c, + 0x0a, 0xd2, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x51, 0x02, 0x1b, 0x1a, 0xc4, + 0x02, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x2c, 0x20, + 0x69, 0x66, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, + 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4d, 0x44, 0x35, 0x20, 0x68, 0x61, 0x73, 0x68, + 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x20, 0x57, 0x68, + 0x65, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x0a, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x74, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x0a, 0x20, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x20, 0x54, 0x68, 0x69, + 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x66, + 0x75, 0x6c, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x05, 0x12, 0x03, + 0x51, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x51, 0x09, + 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x51, 0x19, 0x1a, 0x0a, + 0x89, 0x02, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x57, 0x02, 0x24, 0x1a, 0xfb, 0x01, + 0x20, 0x49, 0x66, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x64, + 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x6f, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, + 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2c, 0x0a, 0x20, 0x66, + 0x6f, 0x72, 0x63, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x6e, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x73, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x47, 0x43, 0x50, 0x2c, 0x20, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x0a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x06, 0x05, 0x12, 0x03, 0x57, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x06, 0x01, 0x12, 0x03, 0x57, 0x07, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, + 0x12, 0x03, 0x57, 0x22, 0x23, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x5b, + 0x02, 0x11, 0x1a, 0x41, 0x20, 0x4f, 0x72, 0x67, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x05, 0x12, 0x03, + 0x5b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x5b, 0x09, + 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x5b, 0x0f, 0x10, 0x0a, + 0xae, 0x01, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, 0x60, 0x02, 0x1b, 0x1a, 0xa0, 0x01, + 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x67, 0x61, + 0x69, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x27, 0x73, 0x20, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x20, 0x75, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x69, 0x66, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x20, 0x2b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x05, 0x12, 0x03, 0x60, 0x02, 0x07, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x60, 0x08, 0x16, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x60, 0x19, 0x1a, 0x0a, 0x63, 0x0a, 0x02, 0x04, 0x01, + 0x12, 0x04, 0x64, 0x00, 0x70, 0x01, 0x1a, 0x57, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x0a, 0x0a, + 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x64, 0x08, 0x24, 0x0a, 0x89, 0x01, 0x0a, 0x04, + 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x66, 0x02, 0x18, 0x1a, 0x7c, 0x20, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x55, 0x72, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x52, 0x4c, + 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x28, 0x65, + 0x2e, 0x67, 0x2e, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6d, 0x79, 0x2d, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x73, 0x33, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x61, + 0x77, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x2e, 0x74, 0x61, 0x72, 0x3f, 0x58, + 0x2d, 0x2e, 0x2e, 0x2e, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, + 0x12, 0x03, 0x66, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, + 0x66, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x66, 0x16, + 0x17, 0x0a, 0x83, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x69, 0x02, 0x18, 0x1a, + 0x76, 0x20, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x55, 0x72, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x73, 0x33, + 0x3a, 0x2f, 0x2f, 0x6d, 0x79, 0x2d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x72, 0x61, 0x6e, + 0x64, 0x6f, 0x6d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, + 0x2e, 0x74, 0x61, 0x72, 0x29, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, + 0x12, 0x03, 0x69, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x69, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x69, 0x16, + 0x17, 0x0a, 0x41, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x6c, 0x02, 0x2b, 0x1a, 0x34, + 0x20, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x06, 0x12, 0x03, 0x6c, + 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x6c, 0x1c, 0x26, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x6c, 0x29, 0x2a, 0x0a, 0x80, + 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x6f, 0x02, 0x22, 0x1a, 0x73, 0x20, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, + 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x6f, 0x02, 0x15, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x6f, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x6f, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x02, 0x04, + 0x02, 0x12, 0x05, 0x72, 0x00, 0x8e, 0x01, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, + 0x03, 0x72, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x00, 0x12, 0x04, 0x73, 0x02, + 0x7b, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, 0x12, 0x03, 0x73, 0x08, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x02, 0x12, 0x03, 0x74, 0x04, 0x30, 0x0a, 0x0f, + 0x0a, 0x08, 0x04, 0x02, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x74, 0x04, 0x30, 0x0a, + 0x28, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x77, 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, + 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, + 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x00, 0x06, 0x12, 0x03, 0x77, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, + 0x12, 0x03, 0x77, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, + 0x77, 0x22, 0x23, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7a, 0x04, 0x2c, + 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, + 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, + 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, + 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x01, 0x06, 0x12, 0x03, 0x7a, 0x04, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x01, 0x01, 0x12, 0x03, 0x7a, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, + 0x03, 0x12, 0x03, 0x7a, 0x2a, 0x2b, 0x0a, 0xba, 0x01, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x01, 0x12, + 0x05, 0x7f, 0x02, 0x8a, 0x01, 0x03, 0x1a, 0xaa, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, + 0x73, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x54, + 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, + 0x61, 0x73, 0x68, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x74, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x20, 0x63, 0x61, 0x6c, + 0x6c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x01, 0x12, 0x03, 0x7f, 0x08, + 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x01, 0x02, 0x12, 0x04, 0x80, 0x01, 0x04, 0x30, + 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x02, 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0x80, 0x01, + 0x04, 0x30, 0x0a, 0x23, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x04, 0x83, 0x01, 0x04, 0x24, + 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, + 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, + 0x12, 0x04, 0x83, 0x01, 0x04, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, + 0x04, 0x83, 0x01, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x04, + 0x83, 0x01, 0x22, 0x23, 0x0a, 0x25, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x04, 0x86, 0x01, + 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x02, 0x02, 0x03, 0x06, 0x12, 0x04, 0x86, 0x01, 0x04, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x03, 0x01, 0x12, 0x04, 0x86, 0x01, 0x12, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x03, 0x03, 0x12, 0x04, 0x86, 0x01, 0x1e, 0x1f, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x04, + 0x12, 0x04, 0x89, 0x01, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x06, 0x12, 0x04, 0x89, 0x01, 0x04, + 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x01, 0x12, 0x04, 0x89, 0x01, 0x17, 0x23, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x04, 0x03, 0x12, 0x04, 0x89, 0x01, 0x26, 0x27, 0x0a, + 0x22, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x05, 0x12, 0x04, 0x8d, 0x01, 0x02, 0x19, 0x1a, 0x14, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x06, 0x12, 0x04, 0x8d, 0x01, + 0x02, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x0e, + 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x05, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x17, 0x18, + 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x06, 0x90, 0x01, 0x00, 0x92, 0x01, 0x01, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x90, 0x01, 0x08, 0x1c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, + 0x03, 0x02, 0x00, 0x12, 0x04, 0x91, 0x01, 0x02, 0x35, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x00, 0x06, 0x12, 0x04, 0x91, 0x01, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, + 0x01, 0x12, 0x04, 0x91, 0x01, 0x1c, 0x30, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, + 0x12, 0x04, 0x91, 0x01, 0x33, 0x34, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0x95, 0x01, + 0x00, 0x98, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x95, 0x01, 0x08, 0x1c, 0x0a, 0x20, + 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x97, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0x97, 0x01, 0x02, 0x19, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x97, 0x01, 0x1a, 0x23, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x97, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0x97, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, + 0x04, 0x04, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x97, 0x01, 0x29, 0x4d, 0x0a, 0x3a, + 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x9b, 0x01, 0x00, 0xa1, 0x01, 0x01, 0x1a, 0x2c, 0x20, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, + 0x01, 0x12, 0x04, 0x9b, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, + 0x04, 0x9d, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9d, 0x01, 0x02, 0x0d, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9d, 0x01, 0x0e, 0x14, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9d, 0x01, 0x17, 0x18, 0x0a, 0x27, 0x0a, 0x04, + 0x04, 0x05, 0x02, 0x01, 0x12, 0x04, 0xa0, 0x01, 0x02, 0x1b, 0x1a, 0x19, 0x20, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x06, 0x12, 0x04, + 0xa0, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa0, + 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa0, 0x01, + 0x19, 0x1a, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, ]; include!("flyteidl2.dataproxy.tonic.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/gen/rust/src/flyteidl2.dataproxy.tonic.rs b/gen/rust/src/flyteidl2.dataproxy.tonic.rs index 4872d0e269..8008bdb687 100644 --- a/gen/rust/src/flyteidl2.dataproxy.tonic.rs +++ b/gen/rust/src/flyteidl2.dataproxy.tonic.rs @@ -144,6 +144,36 @@ pub mod data_proxy_service_client { ); self.inner.unary(req, path, codec).await } + pub async fn get_action_data( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/flyteidl2.dataproxy.DataProxyService/GetActionData", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "flyteidl2.dataproxy.DataProxyService", + "GetActionData", + ), + ); + self.inner.unary(req, path, codec).await + } } } /// Generated server implementations. @@ -167,6 +197,13 @@ pub mod data_proxy_service_server { tonic::Response, tonic::Status, >; + async fn get_action_data( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; } #[derive(Debug)] pub struct DataProxyServiceServer { @@ -339,6 +376,52 @@ pub mod data_proxy_service_server { }; Box::pin(fut) } + "/flyteidl2.dataproxy.DataProxyService/GetActionData" => { + #[allow(non_camel_case_types)] + struct GetActionDataSvc(pub Arc); + impl< + T: DataProxyService, + > tonic::server::UnaryService + for GetActionDataSvc { + type Response = super::GetActionDataResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::get_action_data(&inner, request) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = GetActionDataSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/gen/rust/src/flyteidl2.workflow.rs b/gen/rust/src/flyteidl2.workflow.rs index 5ff74dac9b..83d580db3a 100644 --- a/gen/rust/src/flyteidl2.workflow.rs +++ b/gen/rust/src/flyteidl2.workflow.rs @@ -1313,6 +1313,27 @@ pub struct GetActionDataResponse { #[prost(message, optional, tag="2")] pub outputs: ::core::option::Option, } +/// Request message for getting action data URIs. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionDataUrIsRequest { + /// Action to query. + #[prost(message, optional, tag="1")] + pub action_id: ::core::option::Option, +} +/// Response message for getting action data URIs. +#[pyo3::pyclass(dict, get_all, set_all)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetActionDataUrIsResponse { + /// URI for the action's input data. + #[prost(string, tag="1")] + pub inputs_uri: ::prost::alloc::string::String, + /// URI for the action's output data. Empty if action hasn't succeeded or has no outputs. + #[prost(string, tag="2")] + pub outputs_uri: ::prost::alloc::string::String, +} /// Request message for listing runs. #[pyo3::pyclass(dict, get_all, set_all)] #[allow(clippy::derive_partial_eq_without_eq)] @@ -4576,7 +4597,7 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, 0x0b, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x23, 0x10, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x23, 0x17, 0x18, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, 0x0a, 0xbb, 0x86, 0x01, 0x0a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x6f, 0x33, 0x0a, 0xc4, 0x8e, 0x01, 0x0a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, @@ -4709,1175 +4730,1240 @@ pub const FILE_DESCRIPTOR_SET: &[u8] = &[ 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, - 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x11, 0x0a, - 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, - 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, - 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x40, 0x0a, - 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x22, - 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, - 0x61, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, - 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, 0x0a, 0x14, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x07, - 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x22, - 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, - 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x09, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x15, 0x0a, - 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x19, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x55, 0x72, 0x69, 0x22, 0x84, 0x03, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6f, - 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, - 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6f, 0x72, - 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, - 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, + 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, - 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, 0xb9, 0x0b, - 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, 0x0a, 0x09, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x52, 0x75, 0x6e, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0b, + 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, + 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, + 0x08, 0x01, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x55, + 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x02, 0x0a, 0x10, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x03, 0x6f, 0x72, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x48, 0x00, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x44, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x48, 0x00, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x44, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x0f, + 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, + 0x40, 0x0a, 0x11, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x04, 0x72, 0x75, 0x6e, + 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, + 0x64, 0x22, 0x61, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, 0x0a, 0x0f, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, + 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x52, 0x75, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x65, + 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, + 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7a, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, + 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x22, 0x65, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x47, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, + 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x08, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, + 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, + 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x11, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, + 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, + 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x5e, 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, + 0x77, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x42, 0x11, 0x0a, 0x08, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x5f, 0x62, 0x79, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x71, 0x0a, 0x13, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, + 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x6c, 0x32, + 0xb3, 0x0c, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5a, + 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, - 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, - 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, - 0x12, 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x63, - 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x2e, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x08, 0x41, 0x62, + 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x6e, + 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, - 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x66, + 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x72, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6c, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x77, 0x0a, 0x12, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x06, 0x88, 0x02, 0x01, 0x90, 0x02, 0x01, 0x12, 0x5a, 0x0a, 0x08, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0xca, 0x01, 0x0a, 0x16, 0x63, 0x6f, - 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, - 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, - 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4a, 0x80, 0x57, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xdd, - 0x02, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, - 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, - 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, - 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, - 0x00, 0x24, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x25, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x05, 0x12, 0x03, 0x09, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, - 0x0a, 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x31, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x08, 0x12, 0x03, 0x0c, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, - 0x0e, 0x00, 0x4d, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0e, 0x00, 0x4d, 0x0a, 0x41, - 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x11, 0x00, 0x47, 0x01, 0x1a, 0x35, 0x20, 0x52, 0x75, 0x6e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x12, 0x0a, 0x32, 0x0a, - 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x13, 0x02, 0x40, 0x1a, 0x25, 0x20, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x13, 0x06, 0x0f, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x13, 0x10, 0x20, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, 0x2b, 0x3c, 0x0a, 0x1b, 0x0a, 0x04, 0x06, - 0x00, 0x02, 0x01, 0x12, 0x03, 0x16, 0x02, 0x3d, 0x1a, 0x0e, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x16, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, - 0x03, 0x16, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x16, - 0x29, 0x39, 0x0a, 0x35, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x19, 0x02, 0x1b, 0x03, - 0x1a, 0x27, 0x20, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x19, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, - 0x12, 0x03, 0x19, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x19, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1a, 0x04, - 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x1a, 0x04, 0x2f, - 0x0a, 0x7e, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x03, 0x1e, 0x02, 0x59, 0x1a, 0x71, 0x20, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, - 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1e, 0x06, 0x15, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x1e, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x1e, 0x37, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x03, 0x03, 0x12, 0x03, 0x1e, 0x3e, 0x55, 0x0a, 0x39, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, - 0x12, 0x04, 0x21, 0x02, 0x23, 0x03, 0x1a, 0x2b, 0x20, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x21, 0x06, - 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x21, 0x17, 0x2e, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x21, 0x39, 0x51, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, - 0x00, 0x02, 0x04, 0x04, 0x22, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x85, 0x01, 0x0a, 0x04, 0x06, - 0x00, 0x02, 0x05, 0x12, 0x03, 0x26, 0x02, 0x62, 0x1a, 0x78, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, - 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, - 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, - 0x61, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x26, 0x06, 0x18, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x26, 0x19, 0x32, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x06, 0x12, 0x03, 0x26, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x26, 0x44, 0x5e, 0x0a, 0x33, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x06, 0x12, 0x04, 0x29, 0x02, 0x2b, 0x03, 0x1a, 0x25, 0x20, 0x47, 0x65, 0x74, 0x20, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5c, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, + 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x30, 0x01, 0x12, 0x63, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x65, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x77, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, + 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x0b, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x75, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, + 0x52, 0x49, 0x73, 0x12, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, + 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x49, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xca, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x42, 0x0f, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, + 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, + 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, + 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x4a, 0xcd, 0x5c, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xf2, 0x02, 0x01, 0x0a, 0x08, + 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, + 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, + 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, + 0x06, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x24, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x04, 0x12, 0x03, 0x08, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x05, 0x12, + 0x03, 0x09, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x00, 0x2e, 0x0a, + 0x09, 0x0a, 0x02, 0x03, 0x07, 0x12, 0x03, 0x0b, 0x00, 0x31, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x08, + 0x12, 0x03, 0x0c, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x0e, 0x00, 0x4d, 0x0a, + 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x0e, 0x00, 0x4d, 0x0a, 0x41, 0x0a, 0x02, 0x06, 0x00, + 0x12, 0x04, 0x11, 0x00, 0x4d, 0x01, 0x1a, 0x35, 0x20, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, + 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x11, 0x08, 0x12, 0x0a, 0x32, 0x0a, 0x04, 0x06, 0x00, 0x02, + 0x00, 0x12, 0x03, 0x13, 0x02, 0x40, 0x1a, 0x25, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, + 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x13, 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x13, 0x10, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x00, 0x03, 0x12, 0x03, 0x13, 0x2b, 0x3c, 0x0a, 0x1b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, + 0x03, 0x16, 0x02, 0x3d, 0x1a, 0x0e, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x20, 0x61, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x16, + 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x16, 0x0f, 0x1e, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x16, 0x29, 0x39, 0x0a, 0x35, + 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x19, 0x02, 0x1b, 0x03, 0x1a, 0x27, 0x20, 0x47, + 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, + 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, + 0x19, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x19, 0x14, + 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x19, 0x33, 0x48, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1a, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, + 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x1a, 0x04, 0x2f, 0x0a, 0x7e, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x03, 0x12, 0x03, 0x1e, 0x02, 0x59, 0x1a, 0x71, 0x20, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, + 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1e, 0x06, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x03, 0x02, 0x12, 0x03, 0x1e, 0x16, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, + 0x06, 0x12, 0x03, 0x1e, 0x37, 0x3d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x1e, 0x3e, 0x55, 0x0a, 0x39, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x04, 0x21, 0x02, + 0x23, 0x03, 0x1a, 0x2b, 0x20, 0x47, 0x65, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, + 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x21, 0x06, 0x16, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x04, 0x02, 0x12, 0x03, 0x21, 0x17, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x21, 0x39, 0x51, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x04, 0x04, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x04, 0x04, + 0x22, 0x12, 0x03, 0x22, 0x04, 0x2f, 0x0a, 0x85, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, + 0x03, 0x26, 0x02, 0x62, 0x1a, 0x78, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x26, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x26, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, + 0x02, 0x05, 0x06, 0x12, 0x03, 0x26, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, + 0x03, 0x12, 0x03, 0x26, 0x44, 0x5e, 0x0a, 0x47, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x06, 0x12, 0x04, + 0x29, 0x02, 0x2c, 0x03, 0x1a, 0x39, 0x20, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x3a, 0x20, 0x55, 0x73, 0x65, 0x20, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x29, 0x06, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x02, 0x12, 0x03, 0x29, 0x14, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x29, 0x33, 0x48, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x06, 0x04, 0x12, 0x03, 0x2a, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, - 0x22, 0x12, 0x03, 0x2a, 0x04, 0x2f, 0x0a, 0x40, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, 0x12, 0x04, - 0x2e, 0x02, 0x30, 0x03, 0x1a, 0x32, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, - 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, - 0x01, 0x12, 0x03, 0x2e, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, - 0x03, 0x2e, 0x0f, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x2e, - 0x29, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x04, 0x12, 0x03, 0x2f, 0x04, 0x2f, - 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x07, 0x04, 0x22, 0x12, 0x03, 0x2f, 0x04, 0x2f, 0x0a, - 0xb5, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x08, 0x12, 0x03, 0x34, 0x02, 0x47, 0x1a, 0xa7, 0x01, - 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, + 0x06, 0x04, 0x12, 0x03, 0x2a, 0x04, 0x1d, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, + 0x21, 0x12, 0x03, 0x2a, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x06, 0x04, 0x12, + 0x03, 0x2b, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x06, 0x04, 0x22, 0x12, 0x03, + 0x2b, 0x04, 0x2f, 0x0a, 0x40, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x07, 0x12, 0x04, 0x2f, 0x02, 0x31, + 0x03, 0x1a, 0x32, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, + 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, + 0x2f, 0x06, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x02, 0x12, 0x03, 0x2f, 0x0f, + 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x03, 0x12, 0x03, 0x2f, 0x29, 0x39, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x07, 0x04, 0x12, 0x03, 0x30, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, + 0x06, 0x06, 0x00, 0x02, 0x07, 0x04, 0x22, 0x12, 0x03, 0x30, 0x04, 0x2f, 0x0a, 0xb5, 0x01, 0x0a, + 0x04, 0x06, 0x00, 0x02, 0x08, 0x12, 0x03, 0x35, 0x02, 0x47, 0x1a, 0xa7, 0x01, 0x20, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x0a, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x35, + 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x02, 0x12, 0x03, 0x35, 0x10, 0x20, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x35, 0x2b, 0x31, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x35, 0x32, 0x43, 0x0a, 0x31, 0x0a, 0x04, + 0x06, 0x00, 0x02, 0x09, 0x12, 0x04, 0x38, 0x02, 0x3a, 0x03, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, + 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x01, 0x12, 0x03, 0x38, 0x06, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x09, 0x02, 0x12, 0x03, 0x38, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x09, 0x03, 0x12, 0x03, 0x38, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x09, 0x04, 0x12, 0x03, 0x39, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x09, 0x04, + 0x22, 0x12, 0x03, 0x39, 0x04, 0x2f, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0a, 0x12, + 0x03, 0x3e, 0x02, 0x50, 0x1a, 0x98, 0x01, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x0a, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x01, - 0x12, 0x03, 0x34, 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x02, 0x12, 0x03, - 0x34, 0x10, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x34, 0x2b, - 0x31, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x34, 0x32, 0x43, 0x0a, - 0x31, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x09, 0x12, 0x04, 0x37, 0x02, 0x39, 0x03, 0x1a, 0x23, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x72, 0x75, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x01, 0x12, 0x03, 0x37, 0x06, 0x11, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x02, 0x12, 0x03, 0x37, 0x12, 0x24, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x09, 0x03, 0x12, 0x03, 0x37, 0x2f, 0x42, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x09, 0x04, 0x12, 0x03, 0x38, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, - 0x02, 0x09, 0x04, 0x22, 0x12, 0x03, 0x38, 0x04, 0x2f, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x0a, 0x12, 0x03, 0x3d, 0x02, 0x50, 0x1a, 0x98, 0x01, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x75, - 0x6e, 0x2e, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, - 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x77, 0x6c, 0x79, 0x20, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x0a, 0x20, 0x74, 0x6f, 0x20, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6f, - 0x6e, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x3d, 0x06, 0x12, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, 0x03, 0x3d, 0x13, 0x26, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x3d, 0x31, 0x37, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x0a, 0x03, 0x12, 0x03, 0x3d, 0x38, 0x4c, 0x0a, 0x42, 0x0a, 0x04, 0x06, 0x00, - 0x02, 0x0b, 0x12, 0x03, 0x40, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x38, 0x73, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x20, - 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x01, 0x12, 0x03, 0x40, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x0b, 0x02, 0x12, 0x03, 0x40, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x0b, 0x06, 0x12, 0x03, 0x40, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, - 0x03, 0x12, 0x03, 0x40, 0x44, 0x5e, 0x0a, 0x7a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0c, 0x12, 0x03, - 0x43, 0x02, 0x46, 0x1a, 0x6d, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, - 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, - 0x73, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x20, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x43, 0x06, 0x11, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x02, 0x12, 0x03, 0x43, 0x12, 0x24, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x03, 0x12, 0x03, 0x43, 0x2f, 0x42, 0x0a, 0x54, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x0d, 0x12, 0x03, 0x46, 0x02, 0x4d, 0x1a, 0x47, 0x20, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, - 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, - 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x46, 0x06, 0x11, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x02, 0x12, 0x03, 0x46, 0x12, 0x24, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x06, 0x12, 0x03, 0x46, 0x2f, 0x35, 0x0a, 0x0c, 0x0a, 0x05, - 0x06, 0x00, 0x02, 0x0d, 0x03, 0x12, 0x03, 0x46, 0x36, 0x49, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x00, - 0x12, 0x04, 0x4a, 0x00, 0x71, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x72, 0x75, + 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x0a, 0x20, 0x74, + 0x6f, 0x20, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, + 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0a, 0x01, 0x12, 0x03, 0x3e, 0x06, 0x12, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x0a, 0x02, 0x12, 0x03, 0x3e, 0x13, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x0a, 0x06, 0x12, 0x03, 0x3e, 0x31, 0x37, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x0a, 0x03, 0x12, 0x03, 0x3e, 0x38, 0x4c, 0x0a, 0x42, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0b, 0x12, + 0x03, 0x41, 0x02, 0x62, 0x1a, 0x35, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x6f, 0x66, + 0x20, 0x6b, 0x38, 0x73, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x0b, 0x01, 0x12, 0x03, 0x41, 0x06, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x0b, 0x02, 0x12, 0x03, 0x41, 0x19, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x06, + 0x12, 0x03, 0x41, 0x3d, 0x43, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0b, 0x03, 0x12, 0x03, + 0x41, 0x44, 0x5e, 0x0a, 0x7a, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0c, 0x12, 0x03, 0x44, 0x02, 0x46, + 0x1a, 0x6d, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x62, 0x6f, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, + 0x79, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0c, 0x01, 0x12, 0x03, 0x44, 0x06, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x0c, 0x02, 0x12, 0x03, 0x44, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x0c, 0x03, 0x12, 0x03, 0x44, 0x2f, 0x42, 0x0a, 0x54, 0x0a, 0x04, 0x06, 0x00, 0x02, + 0x0d, 0x12, 0x03, 0x47, 0x02, 0x4d, 0x1a, 0x47, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x73, 0x6b, + 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0d, 0x01, 0x12, 0x03, 0x47, 0x06, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x0d, 0x02, 0x12, 0x03, 0x47, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x0d, 0x06, 0x12, 0x03, 0x47, 0x2f, 0x35, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x0d, 0x03, 0x12, 0x03, 0x47, 0x36, 0x49, 0x0a, 0x4b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x0e, 0x12, + 0x04, 0x4a, 0x02, 0x4c, 0x03, 0x1a, 0x3d, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x55, 0x52, 0x49, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x01, 0x12, 0x03, 0x4a, + 0x06, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x02, 0x12, 0x03, 0x4a, 0x18, 0x30, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x03, 0x12, 0x03, 0x4a, 0x3b, 0x54, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x0e, 0x04, 0x12, 0x03, 0x4b, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, + 0x06, 0x00, 0x02, 0x0e, 0x04, 0x22, 0x12, 0x03, 0x4b, 0x04, 0x2f, 0x0a, 0x31, 0x0a, 0x02, 0x04, + 0x00, 0x12, 0x04, 0x50, 0x00, 0x77, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, + 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x50, 0x08, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, + 0x08, 0x00, 0x12, 0x04, 0x51, 0x02, 0x59, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, + 0x01, 0x12, 0x03, 0x51, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x02, 0x12, + 0x03, 0x52, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, + 0x12, 0x03, 0x52, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x55, + 0x04, 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x55, 0x04, 0x18, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x55, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x55, 0x22, 0x23, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x01, 0x12, 0x03, 0x58, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x58, 0x04, 0x1c, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x58, 0x1d, 0x27, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x58, 0x2a, 0x2b, 0x0a, 0x20, 0x0a, 0x04, + 0x04, 0x00, 0x08, 0x01, 0x12, 0x04, 0x5c, 0x02, 0x67, 0x03, 0x1a, 0x12, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x08, 0x01, 0x01, 0x12, 0x03, 0x5c, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x08, 0x01, 0x02, 0x12, 0x03, 0x5d, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, + 0x08, 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x5d, 0x04, 0x30, 0x0a, 0x22, 0x0a, 0x04, 0x04, + 0x00, 0x02, 0x02, 0x12, 0x03, 0x60, 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, + 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x60, 0x04, 0x17, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x60, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x60, 0x22, 0x23, 0x0a, 0x24, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x03, 0x12, 0x03, 0x63, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, + 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x63, 0x04, 0x11, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x63, 0x12, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x63, 0x1e, 0x1f, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x00, 0x02, + 0x04, 0x12, 0x03, 0x66, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, 0x12, 0x03, 0x66, 0x04, 0x16, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x66, 0x17, 0x23, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x66, 0x26, 0x27, 0x0a, 0x1e, 0x0a, 0x04, + 0x04, 0x00, 0x08, 0x02, 0x12, 0x04, 0x6a, 0x02, 0x6e, 0x03, 0x1a, 0x10, 0x20, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x08, 0x02, 0x01, 0x12, 0x03, 0x6a, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, + 0x02, 0x05, 0x12, 0x03, 0x6b, 0x04, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x06, + 0x12, 0x03, 0x6b, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, + 0x6b, 0x10, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x6b, 0x19, + 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x6d, 0x04, 0x37, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, 0x03, 0x6d, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x6d, 0x1e, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, + 0x02, 0x06, 0x03, 0x12, 0x03, 0x6d, 0x35, 0x36, 0x0a, 0x23, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, + 0x12, 0x03, 0x71, 0x02, 0x1c, 0x1a, 0x16, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x71, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x71, 0x0f, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, + 0x07, 0x03, 0x12, 0x03, 0x71, 0x1a, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, + 0x03, 0x74, 0x02, 0x17, 0x1a, 0x29, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, + 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x74, 0x02, 0x0b, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x74, 0x0c, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x74, 0x15, 0x16, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x01, 0x12, + 0x04, 0x7a, 0x00, 0x7c, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x4a, 0x08, 0x18, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, - 0x00, 0x12, 0x04, 0x4b, 0x02, 0x53, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, - 0x12, 0x03, 0x4b, 0x08, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x02, 0x12, 0x03, - 0x4c, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, - 0x03, 0x4c, 0x04, 0x30, 0x0a, 0x28, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x4f, 0x04, - 0x24, 0x1a, 0x1b, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x4f, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4f, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x4f, 0x22, 0x23, 0x0a, 0x47, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, - 0x12, 0x03, 0x52, 0x04, 0x2c, 0x1a, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x52, 0x04, 0x1c, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x52, 0x1d, 0x27, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x52, 0x2a, 0x2b, 0x0a, 0x20, 0x0a, 0x04, 0x04, - 0x00, 0x08, 0x01, 0x12, 0x04, 0x56, 0x02, 0x61, 0x03, 0x1a, 0x12, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x74, 0x61, 0x73, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x08, 0x01, 0x01, 0x12, 0x03, 0x56, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x08, 0x01, 0x02, 0x12, 0x03, 0x57, 0x04, 0x30, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x08, - 0x01, 0x02, 0x87, 0x09, 0x01, 0x12, 0x03, 0x57, 0x04, 0x30, 0x0a, 0x22, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x02, 0x12, 0x03, 0x5a, 0x04, 0x24, 0x1a, 0x15, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, - 0x73, 0x6b, 0x20, 0x69, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x5a, 0x04, 0x17, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x5a, 0x18, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x5a, 0x22, 0x23, 0x0a, 0x24, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, - 0x12, 0x03, 0x5d, 0x04, 0x20, 0x1a, 0x17, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x5d, 0x04, 0x11, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x5d, 0x12, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x03, 0x03, 0x12, 0x03, 0x5d, 0x1e, 0x1f, 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, - 0x12, 0x03, 0x60, 0x04, 0x28, 0x1a, 0x1a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, 0x12, 0x03, 0x60, 0x04, 0x16, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x60, 0x17, 0x23, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x60, 0x26, 0x27, 0x0a, 0x1e, 0x0a, 0x04, 0x04, - 0x00, 0x08, 0x02, 0x12, 0x04, 0x64, 0x02, 0x68, 0x03, 0x1a, 0x10, 0x20, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x08, 0x02, 0x01, 0x12, 0x03, 0x64, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x05, 0x12, 0x03, 0x65, 0x04, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x06, 0x12, - 0x03, 0x65, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x65, - 0x10, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x65, 0x19, 0x1a, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x67, 0x04, 0x37, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, 0x03, 0x67, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x67, 0x1e, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x06, 0x03, 0x12, 0x03, 0x67, 0x35, 0x36, 0x0a, 0x23, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, - 0x03, 0x6b, 0x02, 0x1c, 0x1a, 0x16, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x73, - 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x6b, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x07, 0x01, 0x12, 0x03, 0x6b, 0x0f, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x07, - 0x03, 0x12, 0x03, 0x6b, 0x1a, 0x1b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, 0x03, - 0x6e, 0x02, 0x17, 0x1a, 0x29, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x6e, 0x02, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x6e, 0x0c, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x08, 0x03, 0x12, 0x03, 0x6e, 0x15, 0x16, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, - 0x74, 0x00, 0x76, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x01, 0x01, 0x12, 0x03, 0x74, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, - 0x12, 0x03, 0x75, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x75, 0x02, 0x05, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x06, - 0x09, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x0c, 0x0d, 0x0a, - 0x31, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x79, 0x00, 0x7f, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x79, 0x08, 0x17, 0x0a, 0x1c, - 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x7b, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, - 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x7b, 0x02, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x7b, 0x17, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x7b, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, - 0x03, 0x7b, 0x22, 0x48, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x02, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, - 0x12, 0x03, 0x7b, 0x23, 0x47, 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x7e, - 0x02, 0x1d, 0x1a, 0x2d, 0x20, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, - 0x2e, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x04, 0x12, 0x03, 0x7e, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x7e, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x7e, 0x12, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x7e, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x03, 0x12, - 0x04, 0x82, 0x01, 0x00, 0x1b, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x03, 0x01, 0x12, 0x04, 0x82, 0x01, 0x08, 0x18, 0x0a, 0x4d, 0x0a, 0x02, 0x04, 0x04, - 0x12, 0x06, 0x85, 0x01, 0x00, 0x88, 0x01, 0x01, 0x1a, 0x3f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, + 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x7a, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x00, 0x12, 0x03, 0x7b, 0x02, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, + 0x03, 0x7b, 0x02, 0x05, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x7b, + 0x06, 0x09, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x7b, 0x0c, 0x0d, + 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x05, 0x7f, 0x00, 0x85, 0x01, 0x01, 0x1a, 0x25, 0x20, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, + 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x7f, 0x08, 0x17, + 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x04, 0x81, 0x01, 0x02, 0x49, 0x1a, 0x0f, + 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x04, 0x81, 0x01, 0x02, 0x16, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x04, 0x81, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x04, 0x81, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x00, 0x08, 0x12, 0x04, 0x81, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x02, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x81, 0x01, 0x23, 0x47, 0x0a, 0x3b, 0x0a, + 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x04, 0x84, 0x01, 0x02, 0x1d, 0x1a, 0x2d, 0x20, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x01, 0x04, 0x12, 0x04, 0x84, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, + 0x01, 0x05, 0x12, 0x04, 0x84, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, + 0x01, 0x12, 0x04, 0x84, 0x01, 0x12, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, + 0x12, 0x04, 0x84, 0x01, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x88, 0x01, + 0x00, 0x1b, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x03, + 0x01, 0x12, 0x04, 0x88, 0x01, 0x08, 0x18, 0x0a, 0x4d, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x06, 0x8b, + 0x01, 0x00, 0x8e, 0x01, 0x01, 0x1a, 0x3f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, + 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x04, 0x8b, + 0x01, 0x08, 0x1c, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, 0x8d, 0x01, 0x02, + 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8d, 0x01, 0x02, + 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x17, 0x1d, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x20, 0x21, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0x8d, 0x01, 0x22, 0x48, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x04, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x8d, 0x01, 0x23, 0x47, + 0x0a, 0x4e, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x91, 0x01, 0x00, 0x94, 0x01, 0x01, 0x1a, 0x40, + 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, + 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x91, 0x01, 0x08, 0x1d, 0x0a, 0x33, 0x0a, + 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x01, 0x02, + 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, 0x0d, 0x14, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x01, 0x17, 0x18, 0x0a, + 0x4e, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0x97, 0x01, 0x00, 0x9a, 0x01, 0x01, 0x1a, 0x40, 0x20, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0x97, 0x01, 0x08, 0x1e, 0x0a, 0x1d, 0x0a, 0x04, + 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0x99, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, + 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0x99, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x00, 0x01, 0x12, 0x04, 0x99, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, + 0x00, 0x03, 0x12, 0x04, 0x99, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, + 0x08, 0x12, 0x04, 0x99, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x06, 0x02, 0x00, 0x08, + 0x87, 0x09, 0x19, 0x12, 0x04, 0x99, 0x01, 0x23, 0x47, 0x0a, 0x4f, 0x0a, 0x02, 0x04, 0x07, 0x12, + 0x06, 0x9d, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x1a, 0x41, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, + 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x07, + 0x01, 0x12, 0x04, 0x9d, 0x01, 0x08, 0x1f, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, + 0x04, 0x9f, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, 0x01, 0x0d, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x07, + 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x17, 0x18, 0x0a, 0x51, 0x0a, 0x02, 0x04, 0x08, 0x12, + 0x06, 0xa3, 0x01, 0x00, 0xa6, 0x01, 0x01, 0x1a, 0x43, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, + 0x04, 0x08, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x08, 0x1f, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x08, 0x02, + 0x00, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, + 0x02, 0x00, 0x01, 0x12, 0x04, 0xa5, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, + 0x00, 0x03, 0x12, 0x04, 0xa5, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, + 0x08, 0x12, 0x04, 0xa5, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x08, 0x02, 0x00, 0x08, + 0x87, 0x09, 0x19, 0x12, 0x04, 0xa5, 0x01, 0x29, 0x4d, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x09, 0x12, + 0x06, 0xa9, 0x01, 0x00, 0xac, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, - 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x04, 0x01, - 0x12, 0x04, 0x85, 0x01, 0x08, 0x1c, 0x0a, 0x1d, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x04, - 0x87, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x04, - 0x87, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x04, 0x87, - 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x04, 0x87, 0x01, - 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x08, 0x12, 0x04, 0x87, 0x01, 0x22, - 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x04, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x87, - 0x01, 0x23, 0x47, 0x0a, 0x4e, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x06, 0x8b, 0x01, 0x00, 0x8e, 0x01, - 0x01, 0x1a, 0x40, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, - 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x04, 0x8b, 0x01, 0x08, 0x1d, - 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x04, 0x8d, 0x01, 0x02, 0x19, 0x1a, 0x25, - 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x04, - 0x8d, 0x01, 0x02, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, - 0x01, 0x0d, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, - 0x17, 0x18, 0x0a, 0x4e, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x06, 0x91, 0x01, 0x00, 0x94, 0x01, 0x01, - 0x1a, 0x40, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x04, 0x91, 0x01, 0x08, 0x1e, 0x0a, - 0x1d, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x04, 0x93, 0x01, 0x02, 0x49, 0x1a, 0x0f, 0x20, - 0x52, 0x75, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x04, 0x93, 0x01, 0x02, 0x16, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x04, 0x93, 0x01, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x04, 0x93, 0x01, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x06, 0x02, 0x00, 0x08, 0x12, 0x04, 0x93, 0x01, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x06, - 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x93, 0x01, 0x23, 0x47, 0x0a, 0x4f, 0x0a, 0x02, - 0x04, 0x07, 0x12, 0x06, 0x97, 0x01, 0x00, 0x9a, 0x01, 0x01, 0x1a, 0x41, 0x20, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0xa9, 0x01, 0x08, 0x20, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x09, + 0x02, 0x00, 0x12, 0x04, 0xab, 0x01, 0x02, 0x1c, 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x07, 0x01, 0x12, 0x04, 0x97, 0x01, 0x08, 0x1f, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x07, - 0x02, 0x00, 0x12, 0x04, 0x99, 0x01, 0x02, 0x19, 0x1a, 0x25, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x04, 0x99, 0x01, 0x02, 0x0c, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x04, 0x99, 0x01, 0x0d, 0x14, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x04, 0x99, 0x01, 0x17, 0x18, 0x0a, 0x51, 0x0a, 0x02, - 0x04, 0x08, 0x12, 0x06, 0x9d, 0x01, 0x00, 0xa0, 0x01, 0x01, 0x1a, 0x43, 0x20, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, - 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x04, 0x9d, 0x01, 0x08, 0x1f, 0x0a, 0x20, 0x0a, 0x04, - 0x04, 0x08, 0x02, 0x00, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9f, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9f, 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9f, 0x01, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x08, 0x02, 0x00, 0x08, 0x12, 0x04, 0x9f, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x08, - 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x9f, 0x01, 0x29, 0x4d, 0x0a, 0x52, 0x0a, 0x02, - 0x04, 0x09, 0x12, 0x06, 0xa3, 0x01, 0x00, 0xa6, 0x01, 0x01, 0x1a, 0x44, 0x20, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, - 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x08, 0x20, 0x0a, 0x36, 0x0a, - 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x1c, 0x1a, 0x28, 0x20, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, - 0xa5, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa5, - 0x01, 0x10, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa5, 0x01, - 0x1a, 0x1b, 0x0a, 0x52, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0xa9, 0x01, 0x00, 0xac, 0x01, 0x01, - 0x1a, 0x44, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0xa9, - 0x01, 0x08, 0x21, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xab, 0x01, 0x02, - 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, - 0xab, 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xab, - 0x01, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xab, 0x01, - 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xab, 0x01, 0x28, - 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xab, - 0x01, 0x29, 0x4d, 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xaf, 0x01, 0x00, 0xb2, 0x01, - 0x01, 0x1a, 0x45, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, - 0x04, 0xaf, 0x01, 0x08, 0x22, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0xb1, - 0x01, 0x02, 0x1c, 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, - 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb1, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x10, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0b, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb1, 0x01, 0x1a, 0x1b, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x0c, - 0x12, 0x06, 0xb5, 0x01, 0x00, 0xb8, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xb5, 0x01, - 0x08, 0x1c, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x4f, - 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb7, - 0x01, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb7, 0x01, - 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb7, 0x01, 0x26, - 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb7, 0x01, 0x28, 0x4e, - 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb7, 0x01, - 0x29, 0x4d, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0xbb, 0x01, 0x00, 0xc1, 0x01, 0x01, - 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x0d, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, - 0x0d, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbd, 0x01, - 0x02, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbd, 0x01, 0x0e, - 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbd, 0x01, 0x17, 0x18, - 0x0a, 0x27, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x04, 0xc0, 0x01, 0x02, 0x1b, 0x1a, 0x19, - 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, - 0x01, 0x06, 0x12, 0x04, 0xc0, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xc0, 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xc0, 0x01, 0x19, 0x1a, 0x0a, 0x31, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xc4, 0x01, - 0x00, 0xdc, 0x01, 0x01, 0x1a, 0x23, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, - 0x12, 0x04, 0xc4, 0x01, 0x08, 0x17, 0x0a, 0x19, 0x0a, 0x03, 0x04, 0x0e, 0x09, 0x12, 0x04, 0xc5, - 0x01, 0x02, 0x10, 0x22, 0x0c, 0x20, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x0a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0e, 0x09, 0x00, 0x12, 0x04, 0xc5, 0x01, 0x0b, 0x0c, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x09, 0x00, 0x01, 0x12, 0x04, 0xc5, 0x01, 0x0b, 0x0c, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x09, 0x00, 0x02, 0x12, 0x04, 0xc5, 0x01, 0x0b, 0x0c, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x0e, 0x09, 0x01, 0x12, 0x04, 0xc5, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0e, 0x09, 0x01, 0x01, 0x12, 0x04, 0xc5, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, - 0x09, 0x01, 0x02, 0x12, 0x04, 0xc5, 0x01, 0x0e, 0x0f, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x0e, 0x02, - 0x00, 0x12, 0x04, 0xc8, 0x01, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xc8, 0x01, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xc8, 0x01, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xc8, 0x01, 0x1f, 0x20, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x0e, 0x08, 0x00, 0x12, - 0x06, 0xca, 0x01, 0x02, 0xdb, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x08, 0x00, 0x01, - 0x12, 0x04, 0xca, 0x01, 0x08, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x08, 0x00, 0x02, 0x12, - 0x04, 0xcb, 0x01, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x0e, 0x08, 0x00, 0x02, 0x87, 0x09, - 0x01, 0x12, 0x04, 0xcb, 0x01, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x01, 0x12, - 0x04, 0xce, 0x01, 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x06, 0x12, 0x04, 0xab, 0x01, 0x02, + 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x01, 0x12, 0x04, 0xab, 0x01, 0x10, 0x17, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, 0x04, 0xab, 0x01, 0x1a, 0x1b, 0x0a, + 0x52, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x06, 0xaf, 0x01, 0x00, 0xb2, 0x01, 0x01, 0x1a, 0x44, 0x20, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x04, 0xaf, 0x01, 0x08, 0x21, + 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, 0x04, 0xb1, 0x01, 0x02, 0x4f, 0x1a, 0x12, + 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb1, 0x01, 0x02, + 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb1, 0x01, 0x1a, 0x23, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb1, 0x01, 0x26, 0x27, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xb1, 0x01, 0x28, 0x4e, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x0a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xb1, 0x01, 0x29, 0x4d, + 0x0a, 0x53, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x06, 0xb5, 0x01, 0x00, 0xb8, 0x01, 0x01, 0x1a, 0x45, + 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x04, 0xb5, 0x01, + 0x08, 0x22, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x1c, + 0x1a, 0x28, 0x20, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xb7, 0x01, 0x02, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xb7, 0x01, 0x10, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xb7, 0x01, 0x1a, 0x1b, 0x0a, 0x39, 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x06, 0xbb, + 0x01, 0x00, 0xbe, 0x01, 0x01, 0x1a, 0x2b, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0c, 0x01, 0x12, 0x04, 0xbb, 0x01, 0x08, 0x1c, 0x0a, + 0x20, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbd, 0x01, 0x02, 0x19, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbd, 0x01, 0x1a, 0x23, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbd, 0x01, 0x26, 0x27, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x12, 0x04, 0xbd, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, + 0x08, 0x04, 0x0c, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xbd, 0x01, 0x29, 0x4d, 0x0a, + 0x3a, 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0xc1, 0x01, 0x00, 0xc7, 0x01, 0x01, 0x1a, 0x2c, 0x20, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x0d, 0x01, 0x12, 0x04, 0xc1, 0x01, 0x08, 0x1d, 0x0a, 0x26, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x00, + 0x12, 0x04, 0xc3, 0x01, 0x02, 0x19, 0x1a, 0x18, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc3, 0x01, 0x02, 0x0d, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc3, 0x01, 0x0e, 0x14, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc3, 0x01, 0x17, 0x18, 0x0a, 0x27, 0x0a, + 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x04, 0xc6, 0x01, 0x02, 0x1b, 0x1a, 0x19, 0x20, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x06, 0x12, + 0x04, 0xc6, 0x01, 0x02, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x04, + 0xc6, 0x01, 0x0f, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc6, + 0x01, 0x19, 0x1a, 0x0a, 0x3d, 0x0a, 0x02, 0x04, 0x0e, 0x12, 0x06, 0xca, 0x01, 0x00, 0xcd, 0x01, + 0x01, 0x1a, 0x2f, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, + 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0xca, 0x01, 0x08, 0x20, 0x0a, + 0x20, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0xcc, 0x01, 0x02, 0x4f, 0x1a, 0x12, 0x20, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x06, 0x12, 0x04, 0xcc, 0x01, 0x02, 0x19, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcc, 0x01, 0x1a, 0x23, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcc, 0x01, 0x26, 0x27, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x12, 0x04, 0xcc, 0x01, 0x28, 0x4e, 0x0a, 0x10, 0x0a, + 0x08, 0x04, 0x0e, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xcc, 0x01, 0x29, 0x4d, 0x0a, + 0x3e, 0x0a, 0x02, 0x04, 0x0f, 0x12, 0x06, 0xd0, 0x01, 0x00, 0xd6, 0x01, 0x01, 0x1a, 0x30, 0x20, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x55, 0x52, 0x49, 0x73, 0x2e, 0x0a, 0x0a, + 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0xd0, 0x01, 0x08, 0x21, 0x0a, 0x30, 0x0a, 0x04, + 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x18, 0x1a, 0x22, 0x20, 0x55, 0x52, 0x49, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, + 0x73, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, 0x05, 0x12, 0x04, 0xd2, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x0f, 0x02, 0x00, 0x01, 0x12, 0x04, 0xd2, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x0f, 0x02, 0x00, 0x03, 0x12, 0x04, 0xd2, 0x01, 0x16, 0x17, 0x0a, 0x65, 0x0a, 0x04, 0x04, + 0x0f, 0x02, 0x01, 0x12, 0x04, 0xd5, 0x01, 0x02, 0x19, 0x1a, 0x57, 0x20, 0x55, 0x52, 0x49, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x73, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x20, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, + 0x73, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x6f, + 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xd5, 0x01, 0x02, + 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xd5, 0x01, 0x09, 0x14, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xd5, 0x01, 0x17, 0x18, 0x0a, + 0x31, 0x0a, 0x02, 0x04, 0x10, 0x12, 0x06, 0xd9, 0x01, 0x00, 0xf1, 0x01, 0x01, 0x1a, 0x23, 0x20, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, + 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x10, 0x01, 0x12, 0x04, 0xd9, 0x01, 0x08, 0x17, 0x0a, + 0x19, 0x0a, 0x03, 0x04, 0x10, 0x09, 0x12, 0x04, 0xda, 0x01, 0x02, 0x10, 0x22, 0x0c, 0x20, 0x44, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, + 0x09, 0x00, 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x00, + 0x01, 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x00, 0x02, + 0x12, 0x04, 0xda, 0x01, 0x0b, 0x0c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x10, 0x09, 0x01, 0x12, 0x04, + 0xda, 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x01, 0x01, 0x12, 0x04, 0xda, + 0x01, 0x0e, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x09, 0x01, 0x02, 0x12, 0x04, 0xda, 0x01, + 0x0e, 0x0f, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x00, 0x12, 0x04, 0xdd, 0x01, 0x02, 0x21, + 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x06, 0x12, 0x04, 0xdd, 0x01, + 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xdd, 0x01, 0x15, + 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xdd, 0x01, 0x1f, 0x20, + 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x10, 0x08, 0x00, 0x12, 0x06, 0xdf, 0x01, 0x02, 0xf0, 0x01, 0x03, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x08, 0x00, 0x01, 0x12, 0x04, 0xdf, 0x01, 0x08, 0x10, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x08, 0x00, 0x02, 0x12, 0x04, 0xe0, 0x01, 0x04, 0x30, 0x0a, 0x10, + 0x0a, 0x08, 0x04, 0x10, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xe0, 0x01, 0x04, 0x30, + 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, 0x04, 0xe3, 0x01, 0x04, 0x3d, 0x1a, 0x27, + 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, + 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x05, + 0x12, 0x04, 0xe3, 0x01, 0x04, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x01, 0x12, + 0x04, 0xe3, 0x01, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, 0x12, 0x04, + 0xe3, 0x01, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x08, 0x12, 0x04, 0xe3, + 0x01, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x10, 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, + 0x12, 0x04, 0xe3, 0x01, 0x14, 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x02, 0x12, 0x04, + 0xe6, 0x01, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x12, 0x04, 0xce, 0x01, 0x04, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0e, 0x02, 0x01, 0x01, 0x12, 0x04, 0xce, 0x01, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0e, 0x02, 0x01, 0x03, 0x12, 0x04, 0xce, 0x01, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0e, 0x02, 0x01, 0x08, 0x12, 0x04, 0xce, 0x01, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0e, - 0x02, 0x01, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0xce, 0x01, 0x14, 0x3b, 0x0a, 0x36, 0x0a, - 0x04, 0x04, 0x0e, 0x02, 0x02, 0x12, 0x04, 0xd1, 0x01, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, - 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x06, 0x12, 0x04, - 0xd1, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0xd1, - 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0xd1, 0x01, - 0x2a, 0x2b, 0x0a, 0x31, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x03, 0x12, 0x04, 0xd4, 0x01, 0x04, 0x28, - 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x74, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x06, 0x12, 0x04, - 0xd4, 0x01, 0x04, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x01, 0x12, 0x04, 0xd4, - 0x01, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x03, 0x03, 0x12, 0x04, 0xd4, 0x01, - 0x26, 0x27, 0x0a, 0x2c, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x04, 0x12, 0x04, 0xd7, 0x01, 0x04, 0x20, - 0x1a, 0x1e, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x04, 0x06, 0x12, 0x04, 0xd7, 0x01, 0x04, 0x11, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x04, 0x01, 0x12, 0x04, 0xd7, 0x01, 0x12, 0x1b, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x04, 0x03, 0x12, 0x04, 0xd7, 0x01, 0x1e, 0x1f, 0x0a, 0x32, 0x0a, - 0x04, 0x04, 0x0e, 0x02, 0x05, 0x12, 0x04, 0xda, 0x01, 0x04, 0x24, 0x1a, 0x24, 0x20, 0x54, 0x61, - 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, + 0x0a, 0x05, 0x04, 0x10, 0x02, 0x02, 0x06, 0x12, 0x04, 0xe6, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x10, 0x02, 0x02, 0x01, 0x12, 0x04, 0xe6, 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x10, 0x02, 0x02, 0x03, 0x12, 0x04, 0xe6, 0x01, 0x2a, 0x2b, 0x0a, 0x31, 0x0a, 0x04, 0x04, + 0x10, 0x02, 0x03, 0x12, 0x04, 0xe9, 0x01, 0x04, 0x28, 0x1a, 0x23, 0x20, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, + 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x06, 0x12, 0x04, 0xe9, 0x01, 0x04, 0x16, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x10, 0x02, 0x03, 0x01, 0x12, 0x04, 0xe9, 0x01, 0x17, 0x23, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x10, 0x02, 0x03, 0x03, 0x12, 0x04, 0xe9, 0x01, 0x26, 0x27, 0x0a, 0x2c, 0x0a, 0x04, 0x04, + 0x10, 0x02, 0x04, 0x12, 0x04, 0xec, 0x01, 0x04, 0x20, 0x1a, 0x1e, 0x20, 0x54, 0x61, 0x73, 0x6b, + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, + 0x04, 0x06, 0x12, 0x04, 0xec, 0x01, 0x04, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x04, + 0x01, 0x12, 0x04, 0xec, 0x01, 0x12, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x04, 0x03, + 0x12, 0x04, 0xec, 0x01, 0x1e, 0x1f, 0x0a, 0x32, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x05, 0x12, 0x04, + 0xef, 0x01, 0x04, 0x24, 0x1a, 0x24, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, + 0x02, 0x05, 0x06, 0x12, 0x04, 0xef, 0x01, 0x04, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, + 0x05, 0x01, 0x12, 0x04, 0xef, 0x01, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x05, + 0x03, 0x12, 0x04, 0xef, 0x01, 0x22, 0x23, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x11, 0x12, 0x06, 0xf4, + 0x01, 0x00, 0xfa, 0x01, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x11, 0x01, 0x12, 0x04, 0xf4, 0x01, 0x08, 0x18, 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x00, + 0x12, 0x04, 0xf6, 0x01, 0x02, 0x18, 0x1a, 0x2c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, + 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x04, 0x12, 0x04, 0xf6, + 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x06, 0x12, 0x04, 0xf6, 0x01, + 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x01, 0x12, 0x04, 0xf6, 0x01, 0x0f, + 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x03, 0x12, 0x04, 0xf6, 0x01, 0x16, 0x17, + 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x01, 0x12, 0x04, 0xf9, 0x01, 0x02, 0x13, 0x1a, 0x36, + 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, + 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x05, 0x12, + 0x04, 0xf9, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x01, 0x12, 0x04, + 0xf9, 0x01, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf9, + 0x01, 0x11, 0x12, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xfd, 0x01, 0x00, 0x8a, 0x02, + 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, 0x01, 0x12, 0x04, + 0xfd, 0x01, 0x08, 0x18, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x12, 0x08, 0x00, 0x12, 0x06, 0xfe, 0x01, + 0x02, 0x89, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, 0x01, 0x12, 0x04, 0xfe, + 0x01, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x08, 0x00, 0x02, 0x12, 0x04, 0xff, 0x01, + 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x12, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, + 0xff, 0x01, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x00, 0x12, 0x04, 0x82, 0x02, + 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x12, 0x02, 0x00, 0x05, 0x12, 0x04, 0x82, 0x02, 0x04, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, + 0x02, 0x00, 0x01, 0x12, 0x04, 0x82, 0x02, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, + 0x00, 0x03, 0x12, 0x04, 0x82, 0x02, 0x11, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, + 0x08, 0x12, 0x04, 0x82, 0x02, 0x13, 0x3c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x12, 0x02, 0x00, 0x08, + 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0x82, 0x02, 0x14, 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x12, + 0x02, 0x01, 0x12, 0x04, 0x84, 0x02, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x05, 0x06, 0x12, 0x04, 0xda, 0x01, 0x04, 0x17, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x05, 0x01, 0x12, 0x04, 0xda, 0x01, 0x18, 0x1f, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x05, 0x03, 0x12, 0x04, 0xda, 0x01, 0x22, 0x23, 0x0a, 0x32, - 0x0a, 0x02, 0x04, 0x0f, 0x12, 0x06, 0xdf, 0x01, 0x00, 0xe5, 0x01, 0x01, 0x1a, 0x24, 0x20, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0xdf, 0x01, 0x08, 0x18, 0x0a, - 0x3a, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0xe1, 0x01, 0x02, 0x18, 0x1a, 0x2c, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x06, 0x12, 0x04, 0x84, 0x02, 0x04, + 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x01, 0x12, 0x04, 0x84, 0x02, 0x1d, 0x27, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x03, 0x12, 0x04, 0x84, 0x02, 0x2a, 0x2b, 0x0a, + 0x36, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x02, 0x12, 0x04, 0x86, 0x02, 0x04, 0x2c, 0x1a, 0x28, 0x20, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x06, + 0x12, 0x04, 0x86, 0x02, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x01, 0x12, + 0x04, 0x86, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x02, 0x03, 0x12, 0x04, + 0x86, 0x02, 0x2a, 0x2b, 0x0a, 0x33, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x03, 0x12, 0x04, 0x88, 0x02, + 0x04, 0x24, 0x1a, 0x25, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, + 0x03, 0x06, 0x12, 0x04, 0x88, 0x02, 0x04, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, + 0x01, 0x12, 0x04, 0x88, 0x02, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x03, 0x03, + 0x12, 0x04, 0x88, 0x02, 0x22, 0x23, 0x0a, 0x33, 0x0a, 0x02, 0x04, 0x13, 0x12, 0x06, 0x8d, 0x02, + 0x00, 0x90, 0x02, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, + 0x13, 0x01, 0x12, 0x04, 0x8d, 0x02, 0x08, 0x19, 0x0a, 0x41, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x00, + 0x12, 0x04, 0x8f, 0x02, 0x02, 0x18, 0x1a, 0x33, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0f, 0x02, 0x00, 0x04, 0x12, 0x04, 0xe1, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xe1, 0x01, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xe1, 0x01, 0x0f, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xe1, 0x01, 0x16, 0x17, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x01, 0x12, - 0x04, 0xe4, 0x01, 0x02, 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, - 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xe4, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xe4, 0x01, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xe4, 0x01, 0x11, 0x12, 0x0a, 0x32, 0x0a, 0x02, 0x04, 0x10, - 0x12, 0x06, 0xe8, 0x01, 0x00, 0xf5, 0x01, 0x01, 0x1a, 0x24, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x10, 0x01, 0x12, 0x04, 0xe8, 0x01, 0x08, 0x18, 0x0a, 0x0e, 0x0a, 0x04, 0x04, - 0x10, 0x08, 0x00, 0x12, 0x06, 0xe9, 0x01, 0x02, 0xf4, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x10, 0x08, 0x00, 0x01, 0x12, 0x04, 0xe9, 0x01, 0x08, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, - 0x08, 0x00, 0x02, 0x12, 0x04, 0xea, 0x01, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x10, 0x08, - 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xea, 0x01, 0x04, 0x30, 0x0a, 0x35, 0x0a, 0x04, 0x04, - 0x10, 0x02, 0x00, 0x12, 0x04, 0xed, 0x01, 0x04, 0x3d, 0x1a, 0x27, 0x20, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x05, 0x12, 0x04, 0xed, 0x01, 0x04, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x01, 0x12, 0x04, 0xed, 0x01, 0x0b, 0x0e, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x03, 0x12, 0x04, 0xed, 0x01, 0x11, 0x12, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x00, 0x08, 0x12, 0x04, 0xed, 0x01, 0x13, 0x3c, 0x0a, 0x11, - 0x0a, 0x09, 0x04, 0x10, 0x02, 0x00, 0x08, 0x87, 0x09, 0x0e, 0x02, 0x12, 0x04, 0xed, 0x01, 0x14, - 0x3b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x01, 0x12, 0x04, 0xef, 0x01, 0x04, 0x2c, 0x1a, - 0x28, 0x20, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, - 0x01, 0x06, 0x12, 0x04, 0xef, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, - 0x01, 0x12, 0x04, 0xef, 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x01, 0x03, - 0x12, 0x04, 0xef, 0x01, 0x2a, 0x2b, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x10, 0x02, 0x02, 0x12, 0x04, - 0xf1, 0x01, 0x04, 0x2c, 0x1a, 0x28, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x10, 0x02, 0x02, 0x06, 0x12, 0x04, 0xf1, 0x01, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x10, 0x02, 0x02, 0x01, 0x12, 0x04, 0xf1, 0x01, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x10, 0x02, 0x02, 0x03, 0x12, 0x04, 0xf1, 0x01, 0x2a, 0x2b, 0x0a, 0x33, 0x0a, 0x04, 0x04, - 0x10, 0x02, 0x03, 0x12, 0x04, 0xf3, 0x01, 0x04, 0x24, 0x1a, 0x25, 0x20, 0x54, 0x61, 0x73, 0x6b, - 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x06, 0x12, 0x04, 0xf3, 0x01, 0x04, 0x17, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x01, 0x12, 0x04, 0xf3, 0x01, 0x18, 0x1f, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x10, 0x02, 0x03, 0x03, 0x12, 0x04, 0xf3, 0x01, 0x22, 0x23, 0x0a, 0x33, 0x0a, - 0x02, 0x04, 0x11, 0x12, 0x06, 0xf8, 0x01, 0x00, 0xfb, 0x01, 0x01, 0x1a, 0x25, 0x20, 0x52, 0x65, + 0x13, 0x02, 0x00, 0x04, 0x12, 0x04, 0x8f, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, + 0x02, 0x00, 0x06, 0x12, 0x04, 0x8f, 0x02, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, + 0x00, 0x01, 0x12, 0x04, 0x8f, 0x02, 0x0f, 0x13, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, + 0x03, 0x12, 0x04, 0x8f, 0x02, 0x16, 0x17, 0x0a, 0x34, 0x0a, 0x02, 0x04, 0x14, 0x12, 0x06, 0x93, + 0x02, 0x00, 0x99, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x14, 0x01, 0x12, 0x04, 0x93, 0x02, 0x08, 0x1a, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x14, + 0x02, 0x00, 0x12, 0x04, 0x95, 0x02, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x14, 0x02, 0x00, 0x06, 0x12, 0x04, 0x95, 0x02, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, + 0x02, 0x00, 0x01, 0x12, 0x04, 0x95, 0x02, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, + 0x00, 0x03, 0x12, 0x04, 0x95, 0x02, 0x1f, 0x20, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x01, + 0x12, 0x04, 0x98, 0x02, 0x02, 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x06, 0x12, 0x04, 0x98, 0x02, 0x02, 0x16, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x01, 0x12, 0x04, 0x98, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x14, 0x02, 0x01, 0x03, 0x12, 0x04, 0x98, 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x14, 0x02, 0x01, 0x08, 0x12, 0x04, 0x98, 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, + 0x14, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x98, 0x02, 0x23, 0x47, 0x0a, 0x35, 0x0a, + 0x02, 0x04, 0x15, 0x12, 0x06, 0x9c, 0x02, 0x00, 0xa5, 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x75, 0x6e, 0x73, - 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x11, 0x01, 0x12, 0x04, 0xf8, 0x01, 0x08, 0x19, 0x0a, - 0x41, 0x0a, 0x04, 0x04, 0x11, 0x02, 0x00, 0x12, 0x04, 0xfa, 0x01, 0x02, 0x18, 0x1a, 0x33, 0x20, - 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, - 0x75, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x04, 0x12, 0x04, 0xfa, 0x01, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x06, 0x12, 0x04, 0xfa, 0x01, 0x0b, 0x0e, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x01, 0x12, 0x04, 0xfa, 0x01, 0x0f, 0x13, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x11, 0x02, 0x00, 0x03, 0x12, 0x04, 0xfa, 0x01, 0x16, 0x17, 0x0a, 0x34, - 0x0a, 0x02, 0x04, 0x12, 0x12, 0x06, 0xfe, 0x01, 0x00, 0x84, 0x02, 0x01, 0x1a, 0x26, 0x20, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x12, 0x01, 0x12, 0x04, 0xfe, 0x01, 0x08, - 0x1a, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x00, 0x12, 0x04, 0x80, 0x02, 0x02, 0x21, 0x1a, + 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x15, 0x01, 0x12, 0x04, 0x9c, 0x02, 0x08, + 0x1b, 0x0a, 0x3d, 0x0a, 0x04, 0x04, 0x15, 0x02, 0x00, 0x12, 0x04, 0x9e, 0x02, 0x02, 0x1e, 0x1a, + 0x2f, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, 0x04, 0x9e, 0x02, 0x02, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, 0x9e, 0x02, 0x0b, 0x11, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9e, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9e, 0x02, 0x1c, 0x1d, 0x0a, 0x44, 0x0a, 0x04, + 0x04, 0x15, 0x02, 0x01, 0x12, 0x04, 0xa1, 0x02, 0x02, 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa1, 0x02, 0x02, + 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa1, 0x02, 0x09, 0x0e, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa1, 0x02, 0x11, 0x12, 0x0a, + 0x35, 0x0a, 0x02, 0x04, 0x16, 0x12, 0x06, 0xa8, 0x02, 0x00, 0xb1, 0x02, 0x01, 0x1a, 0x27, 0x20, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x16, 0x01, 0x12, 0x04, 0xa8, + 0x02, 0x08, 0x1b, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x16, 0x02, 0x00, 0x12, 0x04, 0xaa, 0x02, 0x02, + 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xaa, 0x02, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xaa, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xaa, 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, 0x08, + 0x12, 0x04, 0xaa, 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x16, 0x02, 0x00, 0x08, 0x87, + 0x09, 0x19, 0x12, 0x04, 0xaa, 0x02, 0x23, 0x47, 0x0a, 0x83, 0x03, 0x0a, 0x04, 0x04, 0x16, 0x02, + 0x01, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x24, 0x1a, 0xf4, 0x02, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x73, 0x29, 0x20, 0x63, 0x72, + 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x4f, 0x4e, + 0x54, 0x41, 0x49, 0x4e, 0x53, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x4e, + 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, + 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x73, + 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x2e, 0x0a, 0x20, 0x2d, 0x20, 0x50, 0x48, 0x41, 0x53, 0x45, 0x20, 0x28, + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x49, 0x4e, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x79, + 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x20, 0x28, 0x69, 0x2e, 0x65, + 0x2e, 0x20, 0x5b, 0x22, 0x31, 0x22, 0x2c, 0x20, 0x22, 0x34, 0x22, 0x5d, 0x29, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x04, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x16, 0x02, 0x01, 0x06, 0x12, 0x04, 0xb0, 0x02, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x16, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb0, 0x02, 0x19, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x16, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb0, 0x02, 0x22, 0x23, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x17, + 0x12, 0x06, 0xb4, 0x02, 0x00, 0xb7, 0x02, 0x01, 0x1a, 0x4d, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x6e, 0x72, + 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x17, 0x01, 0x12, 0x04, + 0xb4, 0x02, 0x08, 0x1c, 0x0a, 0x69, 0x0a, 0x04, 0x04, 0x17, 0x02, 0x00, 0x12, 0x04, 0xb6, 0x02, + 0x02, 0x2f, 0x1a, 0x5b, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x20, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, + 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x0a, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x04, 0x12, 0x04, 0xb6, 0x02, 0x02, 0x0a, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x06, 0x12, 0x04, 0xb6, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x17, 0x02, 0x00, 0x01, 0x12, 0x04, 0xb6, 0x02, 0x1a, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x17, 0x02, 0x00, 0x03, 0x12, 0x04, 0xb6, 0x02, 0x2d, 0x2e, 0x0a, 0x0c, 0x0a, 0x02, 0x04, + 0x18, 0x12, 0x06, 0xb9, 0x02, 0x00, 0xbd, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x18, 0x01, + 0x12, 0x04, 0xb9, 0x02, 0x08, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x00, 0x12, 0x04, + 0xba, 0x02, 0x02, 0x48, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x06, 0x12, 0x04, 0xba, + 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x01, 0x12, 0x04, 0xba, 0x02, + 0x1a, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x03, 0x12, 0x04, 0xba, 0x02, 0x1f, + 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x08, 0x12, 0x04, 0xba, 0x02, 0x21, 0x47, + 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x18, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xba, 0x02, + 0x22, 0x46, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x01, 0x12, 0x04, 0xbc, 0x02, 0x02, 0x3a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x05, 0x12, 0x04, 0xbc, 0x02, 0x02, 0x08, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x01, 0x12, 0x04, 0xbc, 0x02, 0x09, 0x10, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x03, 0x12, 0x04, 0xbc, 0x02, 0x13, 0x14, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x18, 0x02, 0x01, 0x08, 0x12, 0x04, 0xbc, 0x02, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, + 0x04, 0x18, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, 0x04, 0x12, 0x04, 0xbc, 0x02, 0x16, 0x38, 0x0a, + 0x0c, 0x0a, 0x02, 0x04, 0x19, 0x12, 0x06, 0xbf, 0x02, 0x00, 0xc1, 0x02, 0x01, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x19, 0x01, 0x12, 0x04, 0xbf, 0x02, 0x08, 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x19, + 0x02, 0x00, 0x12, 0x04, 0xc0, 0x02, 0x02, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, + 0x04, 0x12, 0x04, 0xc0, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x06, + 0x12, 0x04, 0xc0, 0x02, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x01, 0x12, + 0x04, 0xc0, 0x02, 0x18, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x19, 0x02, 0x00, 0x03, 0x12, 0x04, + 0xc0, 0x02, 0x29, 0x2a, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1a, 0x12, 0x06, 0xc3, 0x02, 0x00, 0xc9, + 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1a, 0x01, 0x12, 0x04, 0xc3, 0x02, 0x08, 0x1a, 0x0a, + 0x20, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x00, 0x12, 0x04, 0xc5, 0x02, 0x02, 0x4f, 0x1a, 0x12, 0x20, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xc5, 0x02, 0x02, 0x19, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xc5, 0x02, 0x1a, 0x23, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xc5, 0x02, 0x26, 0x27, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x08, 0x12, 0x04, 0xc5, 0x02, 0x28, 0x4e, 0x0a, 0x10, 0x0a, + 0x08, 0x04, 0x1a, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xc5, 0x02, 0x29, 0x4d, 0x0a, + 0x38, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x01, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x14, 0x1a, 0x2a, 0x20, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, + 0x01, 0x05, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, + 0x01, 0x12, 0x04, 0xc8, 0x02, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x03, + 0x12, 0x04, 0xc8, 0x02, 0x12, 0x13, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x1b, 0x12, 0x04, 0xcb, 0x02, + 0x00, 0x1e, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1b, 0x01, 0x12, 0x04, 0xcb, 0x02, 0x08, 0x1b, 0x0a, + 0x0c, 0x0a, 0x02, 0x04, 0x1c, 0x12, 0x06, 0xcd, 0x02, 0x00, 0xe7, 0x02, 0x01, 0x0a, 0x0b, 0x0a, + 0x03, 0x04, 0x1c, 0x01, 0x12, 0x04, 0xcd, 0x02, 0x08, 0x1a, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1c, + 0x08, 0x00, 0x12, 0x06, 0xce, 0x02, 0x02, 0xd2, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, + 0x08, 0x00, 0x01, 0x12, 0x04, 0xce, 0x02, 0x08, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x08, + 0x00, 0x02, 0x12, 0x04, 0xcf, 0x02, 0x04, 0x30, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1c, 0x08, 0x00, + 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xcf, 0x02, 0x04, 0x30, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x1c, + 0x02, 0x00, 0x12, 0x04, 0xd1, 0x02, 0x04, 0x2c, 0x1a, 0x20, 0x20, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, + 0x02, 0x00, 0x06, 0x12, 0x04, 0xd1, 0x02, 0x04, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, + 0x00, 0x01, 0x12, 0x04, 0xd1, 0x02, 0x1d, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x00, + 0x03, 0x12, 0x04, 0xd1, 0x02, 0x2a, 0x2b, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x01, 0x12, + 0x04, 0xd5, 0x02, 0x02, 0x52, 0x1a, 0x36, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, + 0x29, 0x2e, 0x20, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, + 0x05, 0x04, 0x1c, 0x02, 0x01, 0x06, 0x12, 0x04, 0xd5, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, + 0x04, 0x1c, 0x02, 0x01, 0x01, 0x12, 0x04, 0xd5, 0x02, 0x1c, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, + 0x1c, 0x02, 0x01, 0x03, 0x12, 0x04, 0xd5, 0x02, 0x29, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, + 0x02, 0x01, 0x08, 0x12, 0x04, 0xd5, 0x02, 0x2b, 0x51, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1c, 0x02, + 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xd5, 0x02, 0x2c, 0x50, 0x0a, 0xa6, 0x01, 0x0a, 0x04, + 0x04, 0x1c, 0x02, 0x02, 0x12, 0x04, 0xda, 0x02, 0x02, 0x29, 0x1a, 0x97, 0x01, 0x20, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x75, + 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6f, 0x6e, 0x63, + 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x06, 0x12, 0x04, 0xda, + 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x01, 0x12, 0x04, 0xda, 0x02, + 0x1c, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x02, 0x03, 0x12, 0x04, 0xda, 0x02, 0x27, + 0x28, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x03, 0x12, 0x04, 0xdd, 0x02, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x06, 0x12, 0x04, 0x80, 0x02, 0x02, - 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x01, 0x12, 0x04, 0x80, 0x02, 0x15, 0x1c, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x00, 0x03, 0x12, 0x04, 0x80, 0x02, 0x1f, 0x20, 0x0a, - 0x35, 0x0a, 0x04, 0x04, 0x12, 0x02, 0x01, 0x12, 0x04, 0x83, 0x02, 0x02, 0x49, 0x1a, 0x27, 0x20, - 0x52, 0x75, 0x6e, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x06, 0x12, - 0x04, 0x83, 0x02, 0x02, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x01, 0x12, 0x04, - 0x83, 0x02, 0x17, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x03, 0x12, 0x04, 0x83, - 0x02, 0x20, 0x21, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x12, 0x02, 0x01, 0x08, 0x12, 0x04, 0x83, 0x02, - 0x22, 0x48, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x12, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, - 0x83, 0x02, 0x23, 0x47, 0x0a, 0x35, 0x0a, 0x02, 0x04, 0x13, 0x12, 0x06, 0x87, 0x02, 0x00, 0x90, - 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, - 0x13, 0x01, 0x12, 0x04, 0x87, 0x02, 0x08, 0x1b, 0x0a, 0x3d, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x00, - 0x12, 0x04, 0x89, 0x02, 0x02, 0x1e, 0x1a, 0x2f, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, - 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, - 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x04, - 0x12, 0x04, 0x89, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x06, 0x12, - 0x04, 0x89, 0x02, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x01, 0x12, 0x04, - 0x89, 0x02, 0x12, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x00, 0x03, 0x12, 0x04, 0x89, - 0x02, 0x1c, 0x1d, 0x0a, 0x44, 0x0a, 0x04, 0x04, 0x13, 0x02, 0x01, 0x12, 0x04, 0x8c, 0x02, 0x02, - 0x13, 0x1a, 0x36, 0x20, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, - 0x70, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2c, - 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, - 0x01, 0x05, 0x12, 0x04, 0x8c, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, - 0x01, 0x12, 0x04, 0x8c, 0x02, 0x09, 0x0e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x13, 0x02, 0x01, 0x03, - 0x12, 0x04, 0x8c, 0x02, 0x11, 0x12, 0x0a, 0x35, 0x0a, 0x02, 0x04, 0x14, 0x12, 0x06, 0x93, 0x02, - 0x00, 0x9c, 0x02, 0x01, 0x1a, 0x27, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, - 0x03, 0x04, 0x14, 0x01, 0x12, 0x04, 0x93, 0x02, 0x08, 0x1b, 0x0a, 0x35, 0x0a, 0x04, 0x04, 0x14, - 0x02, 0x00, 0x12, 0x04, 0x95, 0x02, 0x02, 0x49, 0x1a, 0x27, 0x20, 0x52, 0x75, 0x6e, 0x20, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x06, 0x12, 0x04, 0x95, 0x02, 0x02, 0x16, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x01, 0x12, 0x04, 0x95, 0x02, 0x17, 0x1d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x03, 0x12, 0x04, 0x95, 0x02, 0x20, 0x21, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x14, 0x02, 0x00, 0x08, 0x12, 0x04, 0x95, 0x02, 0x22, 0x48, 0x0a, 0x10, 0x0a, - 0x08, 0x04, 0x14, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0x95, 0x02, 0x23, 0x47, 0x0a, - 0x83, 0x03, 0x0a, 0x04, 0x04, 0x14, 0x02, 0x01, 0x12, 0x04, 0x9b, 0x02, 0x02, 0x24, 0x1a, 0xf4, - 0x02, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x28, 0x73, 0x29, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x4e, 0x41, 0x4d, 0x45, - 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x5f, 0x43, 0x41, 0x53, - 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x29, 0x3a, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, - 0x74, 0x65, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x0a, 0x20, 0x2d, 0x20, - 0x50, 0x48, 0x41, 0x53, 0x45, 0x20, 0x28, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x49, - 0x4e, 0x29, 0x3a, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, - 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x70, 0x61, - 0x73, 0x73, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x61, 0x73, - 0x65, 0x73, 0x20, 0x28, 0x69, 0x2e, 0x65, 0x2e, 0x20, 0x5b, 0x22, 0x31, 0x22, 0x2c, 0x20, 0x22, - 0x34, 0x22, 0x5d, 0x29, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x04, 0x12, 0x04, - 0x9b, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x06, 0x12, 0x04, 0x9b, - 0x02, 0x0b, 0x18, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x01, 0x12, 0x04, 0x9b, 0x02, - 0x19, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x14, 0x02, 0x01, 0x03, 0x12, 0x04, 0x9b, 0x02, 0x22, - 0x23, 0x0a, 0x5b, 0x0a, 0x02, 0x04, 0x15, 0x12, 0x06, 0x9f, 0x02, 0x00, 0xa2, 0x02, 0x01, 0x1a, - 0x4d, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x20, 0x65, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x0a, 0x0b, - 0x0a, 0x03, 0x04, 0x15, 0x01, 0x12, 0x04, 0x9f, 0x02, 0x08, 0x1c, 0x0a, 0x69, 0x0a, 0x04, 0x04, - 0x15, 0x02, 0x00, 0x12, 0x04, 0xa1, 0x02, 0x02, 0x2f, 0x1a, 0x5b, 0x20, 0x4e, 0x65, 0x77, 0x20, - 0x6f, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, - 0x20, 0x45, 0x6e, 0x72, 0x69, 0x63, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x04, 0x12, - 0x04, 0xa1, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x06, 0x12, 0x04, - 0xa1, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x01, 0x12, 0x04, 0xa1, - 0x02, 0x1a, 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x15, 0x02, 0x00, 0x03, 0x12, 0x04, 0xa1, 0x02, - 0x2d, 0x2e, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x16, 0x12, 0x06, 0xa4, 0x02, 0x00, 0xa8, 0x02, 0x01, - 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x16, 0x01, 0x12, 0x04, 0xa4, 0x02, 0x08, 0x21, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x16, 0x02, 0x00, 0x12, 0x04, 0xa5, 0x02, 0x02, 0x48, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x16, 0x02, 0x00, 0x06, 0x12, 0x04, 0xa5, 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, - 0x02, 0x00, 0x01, 0x12, 0x04, 0xa5, 0x02, 0x1a, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, - 0x00, 0x03, 0x12, 0x04, 0xa5, 0x02, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x00, - 0x08, 0x12, 0x04, 0xa5, 0x02, 0x21, 0x47, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x16, 0x02, 0x00, 0x08, - 0x87, 0x09, 0x19, 0x12, 0x04, 0xa5, 0x02, 0x22, 0x46, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x16, 0x02, - 0x01, 0x12, 0x04, 0xa7, 0x02, 0x02, 0x3a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x05, - 0x12, 0x04, 0xa7, 0x02, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x01, 0x12, - 0x04, 0xa7, 0x02, 0x09, 0x10, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x03, 0x12, 0x04, - 0xa7, 0x02, 0x13, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x16, 0x02, 0x01, 0x08, 0x12, 0x04, 0xa7, - 0x02, 0x15, 0x39, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x16, 0x02, 0x01, 0x08, 0x87, 0x09, 0x05, 0x04, - 0x12, 0x04, 0xa7, 0x02, 0x16, 0x38, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x17, 0x12, 0x06, 0xaa, 0x02, - 0x00, 0xac, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x17, 0x01, 0x12, 0x04, 0xaa, 0x02, 0x08, - 0x22, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x17, 0x02, 0x00, 0x12, 0x04, 0xab, 0x02, 0x02, 0x2b, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x04, 0x12, 0x04, 0xab, 0x02, 0x02, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x17, 0x02, 0x00, 0x06, 0x12, 0x04, 0xab, 0x02, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x17, 0x02, 0x00, 0x01, 0x12, 0x04, 0xab, 0x02, 0x18, 0x26, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x17, 0x02, 0x00, 0x03, 0x12, 0x04, 0xab, 0x02, 0x29, 0x2a, 0x0a, 0x0c, 0x0a, 0x02, 0x04, - 0x18, 0x12, 0x06, 0xae, 0x02, 0x00, 0xb4, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x18, 0x01, - 0x12, 0x04, 0xae, 0x02, 0x08, 0x1a, 0x0a, 0x20, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x00, 0x12, 0x04, - 0xb0, 0x02, 0x02, 0x4f, 0x1a, 0x12, 0x20, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, - 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, - 0x06, 0x12, 0x04, 0xb0, 0x02, 0x02, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x01, - 0x12, 0x04, 0xb0, 0x02, 0x1a, 0x23, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x03, 0x12, - 0x04, 0xb0, 0x02, 0x26, 0x27, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x00, 0x08, 0x12, 0x04, - 0xb0, 0x02, 0x28, 0x4e, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x18, 0x02, 0x00, 0x08, 0x87, 0x09, 0x19, - 0x12, 0x04, 0xb0, 0x02, 0x29, 0x4d, 0x0a, 0x38, 0x0a, 0x04, 0x04, 0x18, 0x02, 0x01, 0x12, 0x04, - 0xb3, 0x02, 0x02, 0x14, 0x1a, 0x2a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x05, 0x12, 0x04, 0xb3, 0x02, 0x02, 0x08, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x01, 0x12, 0x04, 0xb3, 0x02, 0x09, 0x0f, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x18, 0x02, 0x01, 0x03, 0x12, 0x04, 0xb3, 0x02, 0x12, 0x13, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x19, 0x12, 0x04, 0xb6, 0x02, 0x00, 0x1e, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x19, 0x01, - 0x12, 0x04, 0xb6, 0x02, 0x08, 0x1b, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x1a, 0x12, 0x06, 0xb8, 0x02, - 0x00, 0xd2, 0x02, 0x01, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1a, 0x01, 0x12, 0x04, 0xb8, 0x02, 0x08, - 0x1a, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1a, 0x08, 0x00, 0x12, 0x06, 0xb9, 0x02, 0x02, 0xbd, 0x02, - 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x08, 0x00, 0x01, 0x12, 0x04, 0xb9, 0x02, 0x08, 0x10, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x08, 0x00, 0x02, 0x12, 0x04, 0xba, 0x02, 0x04, 0x30, 0x0a, - 0x10, 0x0a, 0x08, 0x04, 0x1a, 0x08, 0x00, 0x02, 0x87, 0x09, 0x01, 0x12, 0x04, 0xba, 0x02, 0x04, - 0x30, 0x0a, 0x2e, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x00, 0x12, 0x04, 0xbc, 0x02, 0x04, 0x2c, 0x1a, - 0x20, 0x20, 0x57, 0x61, 0x74, 0x63, 0x68, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x06, 0x12, 0x04, 0xbc, 0x02, 0x04, 0x1c, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x01, 0x12, 0x04, 0xbc, 0x02, 0x1d, 0x27, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x00, 0x03, 0x12, 0x04, 0xbc, 0x02, 0x2a, 0x2b, 0x0a, 0x44, - 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x01, 0x12, 0x04, 0xc0, 0x02, 0x02, 0x52, 0x1a, 0x36, 0x20, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x61, 0x66, 0x74, - 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x2e, 0x20, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x06, 0x12, 0x04, 0xc0, - 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x01, 0x12, 0x04, 0xc0, 0x02, - 0x1c, 0x26, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x03, 0x12, 0x04, 0xc0, 0x02, 0x29, - 0x2a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x01, 0x08, 0x12, 0x04, 0xc0, 0x02, 0x2b, 0x51, - 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x1a, 0x02, 0x01, 0x08, 0x87, 0x09, 0x19, 0x12, 0x04, 0xc0, 0x02, - 0x2c, 0x50, 0x0a, 0xa6, 0x01, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x02, 0x12, 0x04, 0xc5, 0x02, 0x02, - 0x29, 0x1a, 0x97, 0x01, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, - 0x61, 0x74, 0x65, 0x20, 0x28, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x2e, - 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x75, - 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x0a, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6c, 0x6f, - 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x1a, 0x02, 0x02, 0x06, 0x12, 0x04, 0xc5, 0x02, 0x02, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, - 0x02, 0x02, 0x01, 0x12, 0x04, 0xc5, 0x02, 0x1c, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, - 0x02, 0x03, 0x12, 0x04, 0xc5, 0x02, 0x27, 0x28, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x1a, 0x02, 0x03, - 0x12, 0x04, 0xc8, 0x02, 0x02, 0x21, 0x1a, 0x21, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, - 0x6c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, - 0x03, 0x06, 0x12, 0x04, 0xc8, 0x02, 0x02, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x03, - 0x01, 0x12, 0x04, 0xc8, 0x02, 0x15, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x02, 0x03, 0x03, - 0x12, 0x04, 0xc8, 0x02, 0x1f, 0x20, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x1a, 0x03, 0x00, 0x12, 0x06, - 0xca, 0x02, 0x02, 0xce, 0x02, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, 0x03, 0x00, 0x01, 0x12, - 0x04, 0xca, 0x02, 0x0a, 0x18, 0x0a, 0x10, 0x0a, 0x06, 0x04, 0x1a, 0x03, 0x00, 0x08, 0x00, 0x12, - 0x06, 0xcb, 0x02, 0x04, 0xcd, 0x02, 0x05, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1a, 0x03, 0x00, 0x08, - 0x00, 0x01, 0x12, 0x04, 0xcb, 0x02, 0x0a, 0x11, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x1a, 0x03, 0x00, - 0x02, 0x00, 0x12, 0x04, 0xcc, 0x02, 0x06, 0x2b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1a, 0x03, 0x00, - 0x02, 0x00, 0x06, 0x12, 0x04, 0xcc, 0x02, 0x06, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1a, 0x03, - 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xcc, 0x02, 0x1c, 0x26, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1a, - 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0xcc, 0x02, 0x29, 0x2a, 0x0a, 0x30, 0x0a, 0x04, 0x04, - 0x1a, 0x02, 0x04, 0x12, 0x04, 0xd1, 0x02, 0x02, 0x30, 0x1a, 0x22, 0x20, 0x4b, 0x6e, 0x6f, 0x77, - 0x6e, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, 0x6e, - 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x1a, 0x02, 0x04, 0x04, 0x12, 0x04, 0xd1, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x1a, 0x02, 0x04, 0x06, 0x12, 0x04, 0xd1, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x1a, 0x02, 0x04, 0x01, 0x12, 0x04, 0xd1, 0x02, 0x1a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1a, - 0x02, 0x04, 0x03, 0x12, 0x04, 0xd1, 0x02, 0x2e, 0x2f, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x1b, 0x12, - 0x06, 0xd5, 0x02, 0x00, 0xdd, 0x02, 0x01, 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, - 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x1b, 0x01, 0x12, 0x04, 0xd5, 0x02, - 0x08, 0x1b, 0x0a, 0xb3, 0x01, 0x0a, 0x04, 0x04, 0x1b, 0x02, 0x00, 0x12, 0x04, 0xd9, 0x02, 0x02, - 0x25, 0x1a, 0xa4, 0x01, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x73, - 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, - 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, - 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, - 0x04, 0x12, 0x04, 0xd9, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x06, - 0x12, 0x04, 0xd9, 0x02, 0x0b, 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x01, 0x12, - 0x04, 0xd9, 0x02, 0x15, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, 0x02, 0x00, 0x03, 0x12, 0x04, - 0xd9, 0x02, 0x23, 0x24, 0x0a, 0x66, 0x0a, 0x04, 0x04, 0x1b, 0x02, 0x01, 0x12, 0x04, 0xdc, 0x02, - 0x02, 0x14, 0x1a, 0x58, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x77, - 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x1b, 0x02, 0x01, 0x05, 0x12, 0x04, 0xdc, 0x02, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x1b, 0x02, 0x01, 0x01, 0x12, 0x04, 0xdc, 0x02, 0x07, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1b, - 0x02, 0x01, 0x03, 0x12, 0x04, 0xdc, 0x02, 0x12, 0x13, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, 0x0a, 0x97, 0x1c, 0x0a, 0x2b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, - 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, - 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, - 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, - 0x4f, 0x0a, 0x20, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, - 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, - 0x22, 0x4e, 0x0a, 0x1f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, - 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, - 0x22, 0x5c, 0x0a, 0x20, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, - 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0x58, - 0x0a, 0x1f, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, - 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x22, 0x4f, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, - 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, + 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x06, 0x12, 0x04, 0xdd, 0x02, 0x02, + 0x14, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x01, 0x12, 0x04, 0xdd, 0x02, 0x15, 0x1c, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x03, 0x03, 0x12, 0x04, 0xdd, 0x02, 0x1f, 0x20, 0x0a, + 0x0e, 0x0a, 0x04, 0x04, 0x1c, 0x03, 0x00, 0x12, 0x06, 0xdf, 0x02, 0x02, 0xe3, 0x02, 0x03, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x03, 0x00, 0x01, 0x12, 0x04, 0xdf, 0x02, 0x0a, 0x18, 0x0a, 0x10, + 0x0a, 0x06, 0x04, 0x1c, 0x03, 0x00, 0x08, 0x00, 0x12, 0x06, 0xe0, 0x02, 0x04, 0xe2, 0x02, 0x05, + 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x08, 0x00, 0x01, 0x12, 0x04, 0xe0, 0x02, 0x0a, + 0x11, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xe1, 0x02, 0x06, + 0x2b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x06, 0x12, 0x04, 0xe1, 0x02, + 0x06, 0x1b, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0xe1, + 0x02, 0x1c, 0x26, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x1c, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, + 0xe1, 0x02, 0x29, 0x2a, 0x0a, 0x30, 0x0a, 0x04, 0x04, 0x1c, 0x02, 0x04, 0x12, 0x04, 0xe6, 0x02, + 0x02, 0x30, 0x1a, 0x22, 0x20, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x20, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x20, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x04, 0x12, + 0x04, 0xe6, 0x02, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x06, 0x12, 0x04, + 0xe6, 0x02, 0x0b, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x01, 0x12, 0x04, 0xe6, + 0x02, 0x1a, 0x2b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1c, 0x02, 0x04, 0x03, 0x12, 0x04, 0xe6, 0x02, + 0x2e, 0x2f, 0x0a, 0x3a, 0x0a, 0x02, 0x04, 0x1d, 0x12, 0x06, 0xea, 0x02, 0x00, 0xf2, 0x02, 0x01, + 0x1a, 0x2c, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x0a, 0x0b, + 0x0a, 0x03, 0x04, 0x1d, 0x01, 0x12, 0x04, 0xea, 0x02, 0x08, 0x1b, 0x0a, 0xb3, 0x01, 0x0a, 0x04, + 0x04, 0x1d, 0x02, 0x00, 0x12, 0x04, 0xee, 0x02, 0x02, 0x25, 0x1a, 0xa4, 0x01, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x0a, + 0x20, 0x46, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, + 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2e, 0x0a, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2e, + 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x04, 0x12, 0x04, 0xee, 0x02, 0x02, 0x0a, + 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x06, 0x12, 0x04, 0xee, 0x02, 0x0b, 0x14, 0x0a, + 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x01, 0x12, 0x04, 0xee, 0x02, 0x15, 0x20, 0x0a, 0x0d, + 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x00, 0x03, 0x12, 0x04, 0xee, 0x02, 0x23, 0x24, 0x0a, 0x66, 0x0a, + 0x04, 0x04, 0x1d, 0x02, 0x01, 0x12, 0x04, 0xf1, 0x02, 0x02, 0x14, 0x1a, 0x58, 0x20, 0x49, 0x6e, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x2c, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x20, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x05, 0x12, 0x04, + 0xf1, 0x02, 0x02, 0x06, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x01, 0x12, 0x04, 0xf1, + 0x02, 0x07, 0x0f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x1d, 0x02, 0x01, 0x03, 0x12, 0x04, 0xf1, 0x02, + 0x12, 0x13, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x97, 0x1c, 0x0a, 0x2b, 0x66, + 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, + 0x77, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x96, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x39, 0x0a, + 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x20, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4a, 0x73, - 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x1c, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x32, - 0xba, 0x04, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, - 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, - 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x74, - 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, - 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, - 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, - 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, - 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, - 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, - 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, - 0x8a, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, - 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, - 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, - 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, - 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd1, 0x01, 0x0a, - 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, - 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, - 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, - 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, - 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, - 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x4a, 0x90, 0x0e, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x45, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, - 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, - 0x12, 0x03, 0x05, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x2e, - 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x07, 0x00, 0x26, 0x0a, 0x08, 0x0a, 0x01, 0x08, - 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, 0x4d, - 0x0a, 0x6e, 0x0a, 0x02, 0x06, 0x00, 0x12, 0x04, 0x0c, 0x00, 0x19, 0x01, 0x1a, 0x62, 0x20, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x64, - 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x0a, - 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0c, 0x08, 0x19, 0x0a, 0x0c, 0x0a, 0x04, - 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x0d, 0x02, 0x0f, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, - 0x02, 0x12, 0x03, 0x0d, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x0d, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0e, - 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, 0x0e, 0x04, - 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x01, 0x12, 0x04, 0x10, 0x02, 0x12, 0x03, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x10, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x10, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x10, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x01, 0x04, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x01, 0x04, - 0x22, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, - 0x13, 0x02, 0x15, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x13, - 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x13, 0x1f, 0x3e, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x13, 0x49, 0x69, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, - 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, - 0x00, 0x02, 0x03, 0x12, 0x04, 0x16, 0x02, 0x18, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x16, 0x06, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, - 0x12, 0x03, 0x16, 0x1b, 0x36, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, - 0x16, 0x41, 0x5d, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x17, 0x04, - 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x03, 0x04, 0x22, 0x12, 0x03, 0x17, 0x04, 0x2f, - 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x1b, 0x00, 0x1f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x00, 0x01, 0x12, 0x03, 0x1b, 0x08, 0x27, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, - 0x12, 0x03, 0x1d, 0x02, 0x2a, 0x1a, 0x22, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, - 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x00, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, - 0x12, 0x03, 0x1d, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x1d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x28, - 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x1e, 0x02, 0x2b, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x1e, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1e, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x29, 0x2a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, - 0x21, 0x00, 0x24, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x21, 0x08, 0x28, - 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x1c, 0x20, + 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x1f, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x04, + 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x20, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, + 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, + 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x6c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x22, 0x58, 0x0a, 0x1f, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, + 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, + 0x63, 0x22, 0x4f, 0x0a, 0x20, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, + 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6a, 0x73, + 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, + 0x61, 0x70, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x58, + 0x0a, 0x1c, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, + 0x0a, 0x08, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x32, 0xba, 0x04, 0x0a, 0x11, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, + 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, + 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x54, 0x6f, + 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, + 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x4c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x54, 0x6f, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, + 0x6e, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x73, + 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, + 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, + 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x4a, + 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x54, 0x6f, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, + 0x46, 0x6f, 0x72, 0x6d, 0x4a, 0x73, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, 0x4c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x6f, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xd1, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, + 0x42, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0xa2, 0x02, 0x03, 0x46, 0x57, 0x58, 0xaa, 0x02, 0x12, 0x46, 0x6c, 0x79, 0x74, 0x65, + 0x69, 0x64, 0x6c, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0xca, 0x02, 0x12, + 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0xe2, 0x02, 0x1e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x5c, 0x57, + 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x32, 0x3a, + 0x3a, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4a, 0x90, 0x0e, 0x0a, 0x06, 0x12, 0x04, + 0x00, 0x00, 0x45, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, + 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1b, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, + 0x04, 0x00, 0x28, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x25, 0x0a, 0x09, + 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x2e, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x03, 0x12, + 0x03, 0x07, 0x00, 0x26, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x09, + 0x0a, 0x02, 0x08, 0x0b, 0x12, 0x03, 0x09, 0x00, 0x4d, 0x0a, 0x6e, 0x0a, 0x02, 0x06, 0x00, 0x12, + 0x04, 0x0c, 0x00, 0x19, 0x01, 0x1a, 0x62, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, + 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x64, 0x69, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, + 0x12, 0x03, 0x0c, 0x08, 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x04, 0x0d, + 0x02, 0x0f, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x06, + 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0d, 0x1f, 0x3e, 0x0a, + 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0d, 0x49, 0x69, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0e, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, + 0x00, 0x02, 0x00, 0x04, 0x22, 0x12, 0x03, 0x0e, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, + 0x02, 0x01, 0x12, 0x04, 0x10, 0x02, 0x12, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, + 0x01, 0x12, 0x03, 0x10, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, + 0x03, 0x10, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x10, + 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x11, 0x04, 0x2f, + 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x01, 0x04, 0x22, 0x12, 0x03, 0x11, 0x04, 0x2f, 0x0a, + 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x04, 0x13, 0x02, 0x15, 0x03, 0x0a, 0x0c, 0x0a, + 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x13, 0x06, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, + 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x13, 0x1f, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, + 0x02, 0x03, 0x12, 0x03, 0x13, 0x49, 0x69, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x02, 0x04, + 0x12, 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, 0x02, 0x02, 0x04, 0x22, 0x12, + 0x03, 0x14, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, 0x04, 0x16, 0x02, + 0x18, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x16, 0x06, 0x1a, + 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x16, 0x1b, 0x36, 0x0a, 0x0c, + 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x16, 0x41, 0x5d, 0x0a, 0x0c, 0x0a, 0x05, + 0x06, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x17, 0x04, 0x2f, 0x0a, 0x0d, 0x0a, 0x06, 0x06, 0x00, + 0x02, 0x03, 0x04, 0x22, 0x12, 0x03, 0x17, 0x04, 0x2f, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, + 0x04, 0x1b, 0x00, 0x1f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x1b, 0x08, + 0x27, 0x0a, 0x2f, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x1d, 0x02, 0x2a, 0x1a, 0x22, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x74, 0x6f, + 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, + 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1d, 0x02, 0x0a, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x1d, 0x0b, 0x1c, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x28, 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, + 0x02, 0x01, 0x12, 0x03, 0x1e, 0x02, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, + 0x12, 0x03, 0x1e, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, + 0x1e, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x29, + 0x2a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x21, 0x00, 0x24, 0x01, 0x0a, 0x0a, 0x0a, + 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x21, 0x08, 0x28, 0x0a, 0x29, 0x0a, 0x04, 0x04, 0x01, 0x02, + 0x00, 0x12, 0x03, 0x23, 0x02, 0x22, 0x1a, 0x1c, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, + 0x4e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, + 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x23, 0x19, 0x1d, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x0a, + 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x26, 0x00, 0x29, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, + 0x01, 0x12, 0x03, 0x26, 0x08, 0x27, 0x0a, 0x36, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, + 0x28, 0x02, 0x22, 0x1a, 0x29, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x28, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x28, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x28, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, + 0x2b, 0x00, 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x2b, 0x08, 0x28, + 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x2d, 0x02, 0x2a, 0x1a, 0x2e, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, + 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x2d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, + 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2d, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, + 0x00, 0x01, 0x12, 0x03, 0x2d, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, + 0x12, 0x03, 0x2d, 0x28, 0x29, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x34, + 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x30, 0x08, 0x27, 0x0a, 0x5f, 0x0a, + 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x33, 0x02, 0x28, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, + 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, 0x63, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x20, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x0a, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, 0x33, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, 0x1a, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, + 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x26, 0x27, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, + 0x36, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x36, 0x08, 0x28, + 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x38, 0x02, 0x22, 0x1a, 0x1d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x23, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x23, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x23, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x26, 0x00, 0x29, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x26, 0x08, 0x27, 0x0a, 0x36, 0x0a, - 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x28, 0x02, 0x22, 0x1a, 0x29, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x28, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x28, 0x19, - 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x28, 0x20, 0x21, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x2b, 0x00, 0x2e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x03, 0x01, 0x12, 0x03, 0x2b, 0x08, 0x28, 0x0a, 0x3b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, - 0x03, 0x2d, 0x02, 0x2a, 0x1a, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, - 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x2d, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2d, 0x0b, 0x1c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2d, 0x1d, 0x25, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2d, 0x28, 0x29, 0x0a, 0x0a, 0x0a, 0x02, - 0x04, 0x04, 0x12, 0x04, 0x30, 0x00, 0x34, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, - 0x03, 0x30, 0x08, 0x27, 0x0a, 0x5f, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x33, 0x02, - 0x28, 0x1a, 0x52, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x20, 0x73, 0x70, 0x65, - 0x63, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, - 0x4a, 0x53, 0x4f, 0x4e, 0x2e, 0x0a, 0x20, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x73, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x33, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, 0x1a, - 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x26, 0x27, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x36, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x05, 0x01, 0x12, 0x03, 0x36, 0x08, 0x28, 0x0a, 0x2a, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, - 0x03, 0x38, 0x02, 0x22, 0x1a, 0x1d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x38, 0x02, - 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x38, 0x19, 0x1d, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x38, 0x20, 0x21, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x06, 0x12, 0x04, 0x3b, 0x00, 0x40, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, - 0x12, 0x03, 0x3b, 0x08, 0x23, 0x0a, 0x54, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3d, - 0x02, 0x2b, 0x1a, 0x47, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x29, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3d, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x3d, 0x1d, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x3d, 0x29, 0x2a, 0x0a, 0x3a, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, 0x3f, - 0x02, 0x24, 0x1a, 0x2d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x4a, 0x53, 0x4f, - 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, - 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x06, 0x12, 0x03, 0x3f, 0x02, 0x18, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3f, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3f, 0x22, 0x23, 0x0a, 0x0a, 0x0a, 0x02, 0x04, - 0x07, 0x12, 0x04, 0x42, 0x00, 0x45, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, - 0x42, 0x08, 0x24, 0x0a, 0x56, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x44, 0x02, 0x2a, - 0x1a, 0x49, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x75, - 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x44, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, - 0x00, 0x06, 0x12, 0x03, 0x44, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x44, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x44, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, + 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x38, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, + 0x02, 0x00, 0x01, 0x12, 0x03, 0x38, 0x19, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, + 0x03, 0x12, 0x03, 0x38, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x3b, 0x00, + 0x40, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x3b, 0x08, 0x23, 0x0a, 0x54, + 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3d, 0x02, 0x2b, 0x1a, 0x47, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x20, 0x28, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x70, 0x29, + 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x06, 0x12, 0x03, 0x3d, + 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3d, 0x1d, 0x26, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3d, 0x29, 0x2a, 0x0a, 0x3a, + 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, 0x3f, 0x02, 0x24, 0x1a, 0x2d, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, + 0x02, 0x01, 0x06, 0x12, 0x03, 0x3f, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, + 0x01, 0x12, 0x03, 0x3f, 0x19, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, + 0x03, 0x3f, 0x22, 0x23, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x42, 0x00, 0x45, 0x01, + 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x42, 0x08, 0x24, 0x0a, 0x56, 0x0a, 0x04, + 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x44, 0x02, 0x2a, 0x1a, 0x49, 0x20, 0x54, 0x68, 0x65, 0x20, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4a, 0x53, 0x4f, 0x4e, + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x04, 0x12, 0x03, 0x44, + 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x44, 0x0b, 0x1c, + 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x44, 0x1d, 0x25, 0x0a, 0x0c, + 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x44, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, ]; include!("flyteidl2.workflow.tonic.rs"); // @@protoc_insertion_point(module) \ No newline at end of file diff --git a/gen/rust/src/flyteidl2.workflow.tonic.rs b/gen/rust/src/flyteidl2.workflow.tonic.rs index 7ed4a78f73..ade96581d9 100644 --- a/gen/rust/src/flyteidl2.workflow.tonic.rs +++ b/gen/rust/src/flyteidl2.workflow.tonic.rs @@ -2664,6 +2664,33 @@ pub mod run_service_client { .insert(GrpcMethod::new("flyteidl2.workflow.RunService", "WatchGroups")); self.inner.server_streaming(req, path, codec).await } + pub async fn get_action_data_ur_is( + &mut self, + request: impl tonic::IntoRequest, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/flyteidl2.workflow.RunService/GetActionDataURIs", + ); + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("flyteidl2.workflow.RunService", "GetActionDataURIs"), + ); + self.inner.unary(req, path, codec).await + } } } /// Generated server implementations. @@ -2810,6 +2837,13 @@ pub mod run_service_server { tonic::Response, tonic::Status, >; + async fn get_action_data_ur_is( + &self, + request: tonic::Request, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; } #[derive(Debug)] pub struct RunServiceServer { @@ -3528,6 +3562,52 @@ pub mod run_service_server { }; Box::pin(fut) } + "/flyteidl2.workflow.RunService/GetActionDataURIs" => { + #[allow(non_camel_case_types)] + struct GetActionDataURIsSvc(pub Arc); + impl< + T: RunService, + > tonic::server::UnaryService + for GetActionDataURIsSvc { + type Response = super::GetActionDataUrIsResponse; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + ::get_action_data_ur_is(&inner, request) + .await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let method = GetActionDataURIsSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.unary(method, req).await; + Ok(res) + }; + Box::pin(fut) + } _ => { Box::pin(async move { Ok( diff --git a/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts b/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts index 2f8f9f3b27..a49857ebc3 100644 --- a/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts +++ b/gen/ts/flyteidl2/dataproxy/dataproxy_service_pb.ts @@ -5,11 +5,11 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1"; import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts"; -import type { ProjectIdentifier, RunIdentifier, TriggerName } from "../common/identifier_pb.ts"; +import type { ActionIdentifier, ProjectIdentifier, RunIdentifier, TriggerName } from "../common/identifier_pb.ts"; import { file_flyteidl2_common_identifier } from "../common/identifier_pb.ts"; import type { OffloadedInputData } from "../common/run_pb.ts"; import { file_flyteidl2_common_run } from "../common/run_pb.ts"; -import type { Inputs } from "../task/common_pb.ts"; +import type { Inputs, Outputs } from "../task/common_pb.ts"; import { file_flyteidl2_task_common } from "../task/common_pb.ts"; import type { TaskIdentifier, TaskSpec } from "../task/task_definition_pb.ts"; import { file_flyteidl2_task_task_definition } from "../task/task_definition_pb.ts"; @@ -23,7 +23,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file flyteidl2/dataproxy/dataproxy_service.proto. */ export const file_flyteidl2_dataproxy_dataproxy_service: GenFile = /*@__PURE__*/ - fileDesc("CitmbHl0ZWlkbDIvZGF0YXByb3h5L2RhdGFwcm94eV9zZXJ2aWNlLnByb3RvEhNmbHl0ZWlkbDIuZGF0YXByb3h5Io0CChtDcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QSGAoHcHJvamVjdBgBIAEoCUIHukgEcgIQARIXCgZkb21haW4YAiABKAlCB7pIBHICEAESEAoIZmlsZW5hbWUYAyABKAkSLQoKZXhwaXJlc19pbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIcCgtjb250ZW50X21kNRgFIAEoDEIHukgEegJoEBIVCg1maWxlbmFtZV9yb290GAYgASgJEiAKGGFkZF9jb250ZW50X21kNV9tZXRhZGF0YRgHIAEoCBILCgNvcmcYCCABKAkSFgoOY29udGVudF9sZW5ndGgYCSABKAMi9wEKHENyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2USEgoKc2lnbmVkX3VybBgBIAEoCRISCgpuYXRpdmVfdXJsGAIgASgJEi4KCmV4cGlyZXNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk8KB2hlYWRlcnMYBCADKAsyPi5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UuSGVhZGVyc0VudHJ5Gi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuACChNVcGxvYWRJbnB1dHNSZXF1ZXN0EjEKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckgAEjkKCnByb2plY3RfaWQYAiABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASMQoHdGFza19pZBgDIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySAESLQoJdGFza19zcGVjGAQgASgLMhguZmx5dGVpZGwyLnRhc2suVGFza1NwZWNIARI1Cgx0cmlnZ2VyX25hbWUYBSABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLlRyaWdnZXJOYW1lSAESJgoGaW5wdXRzGAYgASgLMhYuZmx5dGVpZGwyLnRhc2suSW5wdXRzQgsKAmlkEgW6SAIIAUINCgR0YXNrEgW6SAIIASJaChRVcGxvYWRJbnB1dHNSZXNwb25zZRJCChRvZmZsb2FkZWRfaW5wdXRfZGF0YRgBIAEoCzIkLmZseXRlaWRsMi5jb21tb24uT2ZmbG9hZGVkSW5wdXREYXRhMusEChBEYXRhUHJveHlTZXJ2aWNlEqACChRDcmVhdGVVcGxvYWRMb2NhdGlvbhIwLmZseXRlaWRsMi5kYXRhcHJveHkuQ3JlYXRlVXBsb2FkTG9jYXRpb25SZXF1ZXN0GjEuZmx5dGVpZGwyLmRhdGFwcm94eS5DcmVhdGVVcGxvYWRMb2NhdGlvblJlc3BvbnNlIqIBkkFNGktDcmVhdGVzIGEgd3JpdGUtb25seSBodHRwIGxvY2F0aW9uIHRoYXQgaXMgYWNjZXNzaWJsZSBmb3IgdGFza3MgYXQgcnVudGltZS6C0+STAkw6ASpaJzoBKiIiL2FwaS92MS9vcmcvZGF0YXByb3h5L2FydGlmYWN0X3VybiIeL2FwaS92MS9kYXRhcHJveHkvYXJ0aWZhY3RfdXJuErMCCgxVcGxvYWRJbnB1dHMSKC5mbHl0ZWlkbDIuZGF0YXByb3h5LlVwbG9hZElucHV0c1JlcXVlc3QaKS5mbHl0ZWlkbDIuZGF0YXByb3h5LlVwbG9hZElucHV0c1Jlc3BvbnNlIs0BkkGDARqAAVVwbG9hZHMgaW5wdXRzIGZvciBhIGdpdmVuIHJ1biBvciBwcm9qZWN0IGFuZCByZXR1cm5zIGEgVVJJIGFuZCBjYWNoZSBrZXkgdGhhdCBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgdGhlc2UgaW5wdXRzIGF0IHJ1bnRpbWUugtPkkwJAOgEqWiE6ASoiHC9hcGkvdjEvb3JnL2RhdGFwcm94eS9pbnB1dHMiGC9hcGkvdjEvZGF0YXByb3h5L2lucHV0c0LYAQoXY29tLmZseXRlaWRsMi5kYXRhcHJveHlCFURhdGFwcm94eVNlcnZpY2VQcm90b0gCUAFaN2dpdGh1Yi5jb20vZmx5dGVvcmcvZmx5dGUvdjIvZ2VuL2dvL2ZseXRlaWRsMi9kYXRhcHJveHmiAgNGRFiqAhNGbHl0ZWlkbDIuRGF0YXByb3h5ygITRmx5dGVpZGwyXERhdGFwcm94eeICH0ZseXRlaWRsMlxEYXRhcHJveHlcR1BCTWV0YWRhdGHqAhRGbHl0ZWlkbDI6OkRhdGFwcm94eWIGcHJvdG8z", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_task_definition, file_google_api_annotations, file_google_protobuf_duration, file_google_protobuf_timestamp, file_protoc_gen_openapiv2_options_annotations]); + fileDesc("CitmbHl0ZWlkbDIvZGF0YXByb3h5L2RhdGFwcm94eV9zZXJ2aWNlLnByb3RvEhNmbHl0ZWlkbDIuZGF0YXByb3h5Io0CChtDcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QSGAoHcHJvamVjdBgBIAEoCUIHukgEcgIQARIXCgZkb21haW4YAiABKAlCB7pIBHICEAESEAoIZmlsZW5hbWUYAyABKAkSLQoKZXhwaXJlc19pbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIcCgtjb250ZW50X21kNRgFIAEoDEIHukgEegJoEBIVCg1maWxlbmFtZV9yb290GAYgASgJEiAKGGFkZF9jb250ZW50X21kNV9tZXRhZGF0YRgHIAEoCBILCgNvcmcYCCABKAkSFgoOY29udGVudF9sZW5ndGgYCSABKAMi9wEKHENyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2USEgoKc2lnbmVkX3VybBgBIAEoCRISCgpuYXRpdmVfdXJsGAIgASgJEi4KCmV4cGlyZXNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEk8KB2hlYWRlcnMYBCADKAsyPi5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UuSGVhZGVyc0VudHJ5Gi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuACChNVcGxvYWRJbnB1dHNSZXF1ZXN0EjEKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckgAEjkKCnByb2plY3RfaWQYAiABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASMQoHdGFza19pZBgDIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySAESLQoJdGFza19zcGVjGAQgASgLMhguZmx5dGVpZGwyLnRhc2suVGFza1NwZWNIARI1Cgx0cmlnZ2VyX25hbWUYBSABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLlRyaWdnZXJOYW1lSAESJgoGaW5wdXRzGAYgASgLMhYuZmx5dGVpZGwyLnRhc2suSW5wdXRzQgsKAmlkEgW6SAIIAUINCgR0YXNrEgW6SAIIASJaChRVcGxvYWRJbnB1dHNSZXNwb25zZRJCChRvZmZsb2FkZWRfaW5wdXRfZGF0YRgBIAEoCzIkLmZseXRlaWRsMi5jb21tb24uT2ZmbG9hZGVkSW5wdXREYXRhIlUKFEdldEFjdGlvbkRhdGFSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBImkKFUdldEFjdGlvbkRhdGFSZXNwb25zZRImCgZpbnB1dHMYASABKAsyFi5mbHl0ZWlkbDIudGFzay5JbnB1dHMSKAoHb3V0cHV0cxgCIAEoCzIXLmZseXRlaWRsMi50YXNrLk91dHB1dHMy2AUKEERhdGFQcm94eVNlcnZpY2USoAIKFENyZWF0ZVVwbG9hZExvY2F0aW9uEjAuZmx5dGVpZGwyLmRhdGFwcm94eS5DcmVhdGVVcGxvYWRMb2NhdGlvblJlcXVlc3QaMS5mbHl0ZWlkbDIuZGF0YXByb3h5LkNyZWF0ZVVwbG9hZExvY2F0aW9uUmVzcG9uc2UiogGSQU0aS0NyZWF0ZXMgYSB3cml0ZS1vbmx5IGh0dHAgbG9jYXRpb24gdGhhdCBpcyBhY2Nlc3NpYmxlIGZvciB0YXNrcyBhdCBydW50aW1lLoLT5JMCTDoBKlonOgEqIiIvYXBpL3YxL29yZy9kYXRhcHJveHkvYXJ0aWZhY3RfdXJuIh4vYXBpL3YxL2RhdGFwcm94eS9hcnRpZmFjdF91cm4SswIKDFVwbG9hZElucHV0cxIoLmZseXRlaWRsMi5kYXRhcHJveHkuVXBsb2FkSW5wdXRzUmVxdWVzdBopLmZseXRlaWRsMi5kYXRhcHJveHkuVXBsb2FkSW5wdXRzUmVzcG9uc2UizQGSQYMBGoABVXBsb2FkcyBpbnB1dHMgZm9yIGEgZ2l2ZW4gcnVuIG9yIHByb2plY3QgYW5kIHJldHVybnMgYSBVUkkgYW5kIGNhY2hlIGtleSB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSB0aGVzZSBpbnB1dHMgYXQgcnVudGltZS6C0+STAkA6ASpaIToBKiIcL2FwaS92MS9vcmcvZGF0YXByb3h5L2lucHV0cyIYL2FwaS92MS9kYXRhcHJveHkvaW5wdXRzEmsKDUdldEFjdGlvbkRhdGESKS5mbHl0ZWlkbDIuZGF0YXByb3h5LkdldEFjdGlvbkRhdGFSZXF1ZXN0GiouZmx5dGVpZGwyLmRhdGFwcm94eS5HZXRBY3Rpb25EYXRhUmVzcG9uc2UiA5ACAULYAQoXY29tLmZseXRlaWRsMi5kYXRhcHJveHlCFURhdGFwcm94eVNlcnZpY2VQcm90b0gCUAFaN2dpdGh1Yi5jb20vZmx5dGVvcmcvZmx5dGUvdjIvZ2VuL2dvL2ZseXRlaWRsMi9kYXRhcHJveHmiAgNGRFiqAhNGbHl0ZWlkbDIuRGF0YXByb3h5ygITRmx5dGVpZGwyXERhdGFwcm94eeICH0ZseXRlaWRsMlxEYXRhcHJveHlcR1BCTWV0YWRhdGHqAhRGbHl0ZWlkbDI6OkRhdGFwcm94eWIGcHJvdG8z", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_task_definition, file_google_api_annotations, file_google_protobuf_duration, file_google_protobuf_timestamp, file_protoc_gen_openapiv2_options_annotations]); /** * CreateUploadLocationRequest specifies the request for the CreateUploadLocation API. @@ -253,6 +253,55 @@ export type UploadInputsResponse = Message<"flyteidl2.dataproxy.UploadInputsResp export const UploadInputsResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 3); +/** + * Request message for querying action data. + * + * @generated from message flyteidl2.dataproxy.GetActionDataRequest + */ +export type GetActionDataRequest = Message<"flyteidl2.dataproxy.GetActionDataRequest"> & { + /** + * Action to query. + * + * @generated from field: flyteidl2.common.ActionIdentifier action_id = 1; + */ + actionId?: ActionIdentifier; +}; + +/** + * Describes the message flyteidl2.dataproxy.GetActionDataRequest. + * Use `create(GetActionDataRequestSchema)` to create a new message. + */ +export const GetActionDataRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 4); + +/** + * Response message for querying action data. + * + * @generated from message flyteidl2.dataproxy.GetActionDataResponse + */ +export type GetActionDataResponse = Message<"flyteidl2.dataproxy.GetActionDataResponse"> & { + /** + * Inputs for the action. + * + * @generated from field: flyteidl2.task.Inputs inputs = 1; + */ + inputs?: Inputs; + + /** + * Outputs for the action. + * + * @generated from field: flyteidl2.task.Outputs outputs = 2; + */ + outputs?: Outputs; +}; + +/** + * Describes the message flyteidl2.dataproxy.GetActionDataResponse. + * Use `create(GetActionDataResponseSchema)` to create a new message. + */ +export const GetActionDataResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_dataproxy_dataproxy_service, 5); + /** * DataProxyService provides an interface for managing data uploads and downloads. * @@ -277,6 +326,16 @@ export const DataProxyService: GenService<{ input: typeof UploadInputsRequestSchema; output: typeof UploadInputsResponseSchema; }, + /** + * Get input and output data for an action. + * + * @generated from rpc flyteidl2.dataproxy.DataProxyService.GetActionData + */ + getActionData: { + methodKind: "unary"; + input: typeof GetActionDataRequestSchema; + output: typeof GetActionDataResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_flyteidl2_dataproxy_dataproxy_service, 0); diff --git a/gen/ts/flyteidl2/workflow/run_service_pb.ts b/gen/ts/flyteidl2/workflow/run_service_pb.ts index 378e236c28..d3bb4c0464 100644 --- a/gen/ts/flyteidl2/workflow/run_service_pb.ts +++ b/gen/ts/flyteidl2/workflow/run_service_pb.ts @@ -27,7 +27,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file flyteidl2/workflow/run_service.proto. */ export const file_flyteidl2_workflow_run_service: GenFile = /*@__PURE__*/ - fileDesc("CiRmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX3NlcnZpY2UucHJvdG8SEmZseXRlaWRsMi53b3JrZmxvdyKQBAoQQ3JlYXRlUnVuUmVxdWVzdBIxCgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAYgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYAiABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgBEi0KCXRhc2tfc3BlYxgDIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tTcGVjSAESNQoMdHJpZ2dlcl9uYW1lGAcgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgBEigKBmlucHV0cxgEIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0c0gCEkQKFG9mZmxvYWRlZF9pbnB1dF9kYXRhGAkgASgLMiQuZmx5dGVpZGwyLmNvbW1vbi5PZmZsb2FkZWRJbnB1dERhdGFIAhIpCghydW5fc3BlYxgFIAEoCzIXLmZseXRlaWRsMi50YXNrLlJ1blNwZWMSLQoGc291cmNlGAggASgOMh0uZmx5dGVpZGwyLndvcmtmbG93LlJ1blNvdXJjZUILCgJpZBIFukgCCAFCDQoEdGFzaxIFukgCCAFCDwoNaW5wdXRfd3JhcHBlciI5ChFDcmVhdGVSdW5SZXNwb25zZRIkCgNydW4YASABKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuImoKD0Fib3J0UnVuUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARITCgZyZWFzb24YAiABKAlIAIgBAUIJCgdfcmVhc29uIhIKEEFib3J0UnVuUmVzcG9uc2UiTwoUR2V0UnVuRGV0YWlsc1JlcXVlc3QSNwoGcnVuX2lkGAEgASgLMh8uZmx5dGVpZGwyLmNvbW1vbi5SdW5JZGVudGlmaWVyQga6SAPIAQEiSAoVR2V0UnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJRChZXYXRjaFJ1bkRldGFpbHNSZXF1ZXN0EjcKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIkoKF1dhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJYChdHZXRBY3Rpb25EZXRhaWxzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBASJOChhHZXRBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIloKGVdhdGNoQWN0aW9uRGV0YWlsc1JlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiUAoaV2F0Y2hBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIlUKFEdldEFjdGlvbkRhdGFSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBImkKFUdldEFjdGlvbkRhdGFSZXNwb25zZRImCgZpbnB1dHMYASABKAsyFi5mbHl0ZWlkbDIudGFzay5JbnB1dHMSKAoHb3V0cHV0cxgCIAEoCzIXLmZseXRlaWRsMi50YXNrLk91dHB1dHMizAIKD0xpc3RSdW5zUmVxdWVzdBIuCgdyZXF1ZXN0GAEgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5MaXN0UmVxdWVzdBIWCgNvcmcYAiABKAlCB7pIBHICEAFIABI5Cgpwcm9qZWN0X2lkGAQgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjUKDHRyaWdnZXJfbmFtZRgGIAEoCzIdLmZseXRlaWRsMi5jb21tb24uVHJpZ2dlck5hbWVIABItCgl0YXNrX25hbWUYByABKAsyGC5mbHl0ZWlkbDIudGFzay5UYXNrTmFtZUgAEjEKB3Rhc2tfaWQYCCABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgAQhEKCHNjb3BlX2J5EgW6SAIIAUoECAMQBEoECAUQBiJIChBMaXN0UnVuc1Jlc3BvbnNlEiUKBHJ1bnMYASADKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuEg0KBXRva2VuGAIgASgJIuQBChBXYXRjaFJ1bnNSZXF1ZXN0EhYKA29yZxgCIAEoCUIHukgEcgIQAUgAEjkKCmNsdXN0ZXJfaWQYAyABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLkNsdXN0ZXJJZGVudGlmaWVySAASOQoKcHJvamVjdF9pZBgEIAEoCzIjLmZseXRlaWRsMi5jb21tb24uUHJvamVjdElkZW50aWZpZXJIABIxCgd0YXNrX2lkGAUgASgLMh4uZmx5dGVpZGwyLnRhc2suVGFza0lkZW50aWZpZXJIAEIPCgZ0YXJnZXQSBbpIAggBIjoKEVdhdGNoUnVuc1Jlc3BvbnNlEiUKBHJ1bnMYASADKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuIn0KEkxpc3RBY3Rpb25zUmVxdWVzdBIuCgdyZXF1ZXN0GAEgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5MaXN0UmVxdWVzdBI3CgZydW5faWQYAiABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBASJRChNMaXN0QWN0aW9uc1Jlc3BvbnNlEisKB2FjdGlvbnMYASADKAsyGi5mbHl0ZWlkbDIud29ya2Zsb3cuQWN0aW9uEg0KBXRva2VuGAIgASgJIngKE1dhdGNoQWN0aW9uc1JlcXVlc3QSNwoGcnVuX2lkGAEgASgLMh8uZmx5dGVpZGwyLmNvbW1vbi5SdW5JZGVudGlmaWVyQga6SAPIAQESKAoGZmlsdGVyGAIgAygLMhguZmx5dGVpZGwyLmNvbW1vbi5GaWx0ZXIiVAoUV2F0Y2hBY3Rpb25zUmVzcG9uc2USPAoQZW5yaWNoZWRfYWN0aW9ucxgBIAMoCzIiLmZseXRlaWRsMi53b3JrZmxvdy5FbnJpY2hlZEFjdGlvbiJtChlXYXRjaENsdXN0ZXJFdmVudHNSZXF1ZXN0EjYKAmlkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQESGAoHYXR0ZW1wdBgCIAEoDUIHukgEKgIgACJWChpXYXRjaENsdXN0ZXJFdmVudHNSZXNwb25zZRI4Cg5jbHVzdGVyX2V2ZW50cxgBIAMoCzIgLmZseXRlaWRsMi53b3JrZmxvdy5DbHVzdGVyRXZlbnQiYwoSQWJvcnRBY3Rpb25SZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBEg4KBnJlYXNvbhgCIAEoCSIVChNBYm9ydEFjdGlvblJlc3BvbnNlIp8DChJXYXRjaEdyb3Vwc1JlcXVlc3QSOQoKcHJvamVjdF9pZBgBIAEoCzIjLmZseXRlaWRsMi5jb21tb24uUHJvamVjdElkZW50aWZpZXJIABI2CgpzdGFydF9kYXRlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIGukgDyAEBEiwKCGVuZF9kYXRlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgdyZXF1ZXN0GAQgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5MaXN0UmVxdWVzdBJQChFrbm93bl9zb3J0X2ZpZWxkcxgFIAMoCzI1LmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEdyb3Vwc1JlcXVlc3QuS25vd25Tb3J0RmllbGQaUwoOS25vd25Tb3J0RmllbGQSNgoKY3JlYXRlZF9hdBgBIAEoDjIgLmZseXRlaWRsMi5jb21tb24uU29ydC5EaXJlY3Rpb25IAEIJCgdzb3J0X2J5QhEKCHNjb3BlX2J5EgW6SAIIASJbChNXYXRjaEdyb3Vwc1Jlc3BvbnNlEjIKC3Rhc2tfZ3JvdXBzGAEgAygLMh0uZmx5dGVpZGwyLndvcmtmbG93LlRhc2tHcm91cBIQCghzZW50aW5lbBgCIAEoCDK5CwoKUnVuU2VydmljZRJaCglDcmVhdGVSdW4SJC5mbHl0ZWlkbDIud29ya2Zsb3cuQ3JlYXRlUnVuUmVxdWVzdBolLmZseXRlaWRsMi53b3JrZmxvdy5DcmVhdGVSdW5SZXNwb25zZSIAElcKCEFib3J0UnVuEiMuZmx5dGVpZGwyLndvcmtmbG93LkFib3J0UnVuUmVxdWVzdBokLmZseXRlaWRsMi53b3JrZmxvdy5BYm9ydFJ1blJlc3BvbnNlIgASaQoNR2V0UnVuRGV0YWlscxIoLmZseXRlaWRsMi53b3JrZmxvdy5HZXRSdW5EZXRhaWxzUmVxdWVzdBopLmZseXRlaWRsMi53b3JrZmxvdy5HZXRSdW5EZXRhaWxzUmVzcG9uc2UiA5ACARJuCg9XYXRjaFJ1bkRldGFpbHMSKi5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hSdW5EZXRhaWxzUmVxdWVzdBorLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaFJ1bkRldGFpbHNSZXNwb25zZSIAMAEScgoQR2V0QWN0aW9uRGV0YWlscxIrLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EZXRhaWxzUmVxdWVzdBosLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EZXRhaWxzUmVzcG9uc2UiA5ACARJ3ChJXYXRjaEFjdGlvbkRldGFpbHMSLS5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hBY3Rpb25EZXRhaWxzUmVxdWVzdBouLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEFjdGlvbkRldGFpbHNSZXNwb25zZSIAMAESaQoNR2V0QWN0aW9uRGF0YRIoLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EYXRhUmVxdWVzdBopLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EYXRhUmVzcG9uc2UiA5ACARJaCghMaXN0UnVucxIjLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0UnVuc1JlcXVlc3QaJC5mbHl0ZWlkbDIud29ya2Zsb3cuTGlzdFJ1bnNSZXNwb25zZSIDkAIBElwKCVdhdGNoUnVucxIkLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaFJ1bnNSZXF1ZXN0GiUuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuc1Jlc3BvbnNlIgAwARJjCgtMaXN0QWN0aW9ucxImLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0QWN0aW9uc1JlcXVlc3QaJy5mbHl0ZWlkbDIud29ya2Zsb3cuTGlzdEFjdGlvbnNSZXNwb25zZSIDkAIBEmUKDFdhdGNoQWN0aW9ucxInLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEFjdGlvbnNSZXF1ZXN0GiguZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uc1Jlc3BvbnNlIgAwARJ3ChJXYXRjaENsdXN0ZXJFdmVudHMSLS5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hDbHVzdGVyRXZlbnRzUmVxdWVzdBouLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaENsdXN0ZXJFdmVudHNSZXNwb25zZSIAMAESYAoLQWJvcnRBY3Rpb24SJi5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRBY3Rpb25SZXF1ZXN0GicuZmx5dGVpZGwyLndvcmtmbG93LkFib3J0QWN0aW9uUmVzcG9uc2UiABJiCgtXYXRjaEdyb3VwcxImLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEdyb3Vwc1JlcXVlc3QaJy5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hHcm91cHNSZXNwb25zZSIAMAFCzAEKFmNvbS5mbHl0ZWlkbDIud29ya2Zsb3dCD1J1blNlcnZpY2VQcm90b0gCUAFaNmdpdGh1Yi5jb20vZmx5dGVvcmcvZmx5dGUvdjIvZ2VuL2dvL2ZseXRlaWRsMi93b3JrZmxvd6ICA0ZXWKoCEkZseXRlaWRsMi5Xb3JrZmxvd8oCEkZseXRlaWRsMlxXb3JrZmxvd+ICHkZseXRlaWRsMlxXb3JrZmxvd1xHUEJNZXRhZGF0YeoCE0ZseXRlaWRsMjo6V29ya2Zsb3diBnByb3RvMw", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_list, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_run, file_flyteidl2_task_task_definition, file_flyteidl2_workflow_run_definition, file_google_protobuf_timestamp]); + fileDesc("CiRmbHl0ZWlkbDIvd29ya2Zsb3cvcnVuX3NlcnZpY2UucHJvdG8SEmZseXRlaWRsMi53b3JrZmxvdyKQBAoQQ3JlYXRlUnVuUmVxdWVzdBIxCgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAYgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYAiABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgBEi0KCXRhc2tfc3BlYxgDIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tTcGVjSAESNQoMdHJpZ2dlcl9uYW1lGAcgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgBEigKBmlucHV0cxgEIAEoCzIWLmZseXRlaWRsMi50YXNrLklucHV0c0gCEkQKFG9mZmxvYWRlZF9pbnB1dF9kYXRhGAkgASgLMiQuZmx5dGVpZGwyLmNvbW1vbi5PZmZsb2FkZWRJbnB1dERhdGFIAhIpCghydW5fc3BlYxgFIAEoCzIXLmZseXRlaWRsMi50YXNrLlJ1blNwZWMSLQoGc291cmNlGAggASgOMh0uZmx5dGVpZGwyLndvcmtmbG93LlJ1blNvdXJjZUILCgJpZBIFukgCCAFCDQoEdGFzaxIFukgCCAFCDwoNaW5wdXRfd3JhcHBlciI5ChFDcmVhdGVSdW5SZXNwb25zZRIkCgNydW4YASABKAsyFy5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuImoKD0Fib3J0UnVuUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARITCgZyZWFzb24YAiABKAlIAIgBAUIJCgdfcmVhc29uIhIKEEFib3J0UnVuUmVzcG9uc2UiTwoUR2V0UnVuRGV0YWlsc1JlcXVlc3QSNwoGcnVuX2lkGAEgASgLMh8uZmx5dGVpZGwyLmNvbW1vbi5SdW5JZGVudGlmaWVyQga6SAPIAQEiSAoVR2V0UnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJRChZXYXRjaFJ1bkRldGFpbHNSZXF1ZXN0EjcKBnJ1bl9pZBgBIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIkoKF1dhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlEi8KB2RldGFpbHMYASABKAsyHi5mbHl0ZWlkbDIud29ya2Zsb3cuUnVuRGV0YWlscyJYChdHZXRBY3Rpb25EZXRhaWxzUmVxdWVzdBI9CglhY3Rpb25faWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBASJOChhHZXRBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIloKGVdhdGNoQWN0aW9uRGV0YWlsc1JlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQEiUAoaV2F0Y2hBY3Rpb25EZXRhaWxzUmVzcG9uc2USMgoHZGV0YWlscxgBIAEoCzIhLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb25EZXRhaWxzIlUKFEdldEFjdGlvbkRhdGFSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBImkKFUdldEFjdGlvbkRhdGFSZXNwb25zZRImCgZpbnB1dHMYASABKAsyFi5mbHl0ZWlkbDIudGFzay5JbnB1dHMSKAoHb3V0cHV0cxgCIAEoCzIXLmZseXRlaWRsMi50YXNrLk91dHB1dHMiWQoYR2V0QWN0aW9uRGF0YVVSSXNSZXF1ZXN0Ej0KCWFjdGlvbl9pZBgBIAEoCzIiLmZseXRlaWRsMi5jb21tb24uQWN0aW9uSWRlbnRpZmllckIGukgDyAEBIkQKGUdldEFjdGlvbkRhdGFVUklzUmVzcG9uc2USEgoKaW5wdXRzX3VyaRgBIAEoCRITCgtvdXRwdXRzX3VyaRgCIAEoCSLMAgoPTGlzdFJ1bnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EhYKA29yZxgCIAEoCUIHukgEcgIQAUgAEjkKCnByb2plY3RfaWQYBCABKAsyIy5mbHl0ZWlkbDIuY29tbW9uLlByb2plY3RJZGVudGlmaWVySAASNQoMdHJpZ2dlcl9uYW1lGAYgASgLMh0uZmx5dGVpZGwyLmNvbW1vbi5UcmlnZ2VyTmFtZUgAEi0KCXRhc2tfbmFtZRgHIAEoCzIYLmZseXRlaWRsMi50YXNrLlRhc2tOYW1lSAASMQoHdGFza19pZBgIIAEoCzIeLmZseXRlaWRsMi50YXNrLlRhc2tJZGVudGlmaWVySABCEQoIc2NvcGVfYnkSBbpIAggBSgQIAxAESgQIBRAGIkgKEExpc3RSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4SDQoFdG9rZW4YAiABKAki5AEKEFdhdGNoUnVuc1JlcXVlc3QSFgoDb3JnGAIgASgJQge6SARyAhABSAASOQoKY2x1c3Rlcl9pZBgDIAEoCzIjLmZseXRlaWRsMi5jb21tb24uQ2x1c3RlcklkZW50aWZpZXJIABI5Cgpwcm9qZWN0X2lkGAQgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjEKB3Rhc2tfaWQYBSABKAsyHi5mbHl0ZWlkbDIudGFzay5UYXNrSWRlbnRpZmllckgAQg8KBnRhcmdldBIFukgCCAEiOgoRV2F0Y2hSdW5zUmVzcG9uc2USJQoEcnVucxgBIAMoCzIXLmZseXRlaWRsMi53b3JrZmxvdy5SdW4ifQoSTGlzdEFjdGlvbnNSZXF1ZXN0Ei4KB3JlcXVlc3QYASABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0EjcKBnJ1bl9pZBgCIAEoCzIfLmZseXRlaWRsMi5jb21tb24uUnVuSWRlbnRpZmllckIGukgDyAEBIlEKE0xpc3RBY3Rpb25zUmVzcG9uc2USKwoHYWN0aW9ucxgBIAMoCzIaLmZseXRlaWRsMi53b3JrZmxvdy5BY3Rpb24SDQoFdG9rZW4YAiABKAkieAoTV2F0Y2hBY3Rpb25zUmVxdWVzdBI3CgZydW5faWQYASABKAsyHy5mbHl0ZWlkbDIuY29tbW9uLlJ1bklkZW50aWZpZXJCBrpIA8gBARIoCgZmaWx0ZXIYAiADKAsyGC5mbHl0ZWlkbDIuY29tbW9uLkZpbHRlciJUChRXYXRjaEFjdGlvbnNSZXNwb25zZRI8ChBlbnJpY2hlZF9hY3Rpb25zGAEgAygLMiIuZmx5dGVpZGwyLndvcmtmbG93LkVucmljaGVkQWN0aW9uIm0KGVdhdGNoQ2x1c3RlckV2ZW50c1JlcXVlc3QSNgoCaWQYASABKAsyIi5mbHl0ZWlkbDIuY29tbW9uLkFjdGlvbklkZW50aWZpZXJCBrpIA8gBARIYCgdhdHRlbXB0GAIgASgNQge6SAQqAiAAIlYKGldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlEjgKDmNsdXN0ZXJfZXZlbnRzGAEgAygLMiAuZmx5dGVpZGwyLndvcmtmbG93LkNsdXN0ZXJFdmVudCJjChJBYm9ydEFjdGlvblJlcXVlc3QSPQoJYWN0aW9uX2lkGAEgASgLMiIuZmx5dGVpZGwyLmNvbW1vbi5BY3Rpb25JZGVudGlmaWVyQga6SAPIAQESDgoGcmVhc29uGAIgASgJIhUKE0Fib3J0QWN0aW9uUmVzcG9uc2UinwMKEldhdGNoR3JvdXBzUmVxdWVzdBI5Cgpwcm9qZWN0X2lkGAEgASgLMiMuZmx5dGVpZGwyLmNvbW1vbi5Qcm9qZWN0SWRlbnRpZmllckgAEjYKCnN0YXJ0X2RhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESLAoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KB3JlcXVlc3QYBCABKAsyHS5mbHl0ZWlkbDIuY29tbW9uLkxpc3RSZXF1ZXN0ElAKEWtub3duX3NvcnRfZmllbGRzGAUgAygLMjUuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdC5Lbm93blNvcnRGaWVsZBpTCg5Lbm93blNvcnRGaWVsZBI2CgpjcmVhdGVkX2F0GAEgASgOMiAuZmx5dGVpZGwyLmNvbW1vbi5Tb3J0LkRpcmVjdGlvbkgAQgkKB3NvcnRfYnlCEQoIc2NvcGVfYnkSBbpIAggBIlsKE1dhdGNoR3JvdXBzUmVzcG9uc2USMgoLdGFza19ncm91cHMYASADKAsyHS5mbHl0ZWlkbDIud29ya2Zsb3cuVGFza0dyb3VwEhAKCHNlbnRpbmVsGAIgASgIMrMMCgpSdW5TZXJ2aWNlEloKCUNyZWF0ZVJ1bhIkLmZseXRlaWRsMi53b3JrZmxvdy5DcmVhdGVSdW5SZXF1ZXN0GiUuZmx5dGVpZGwyLndvcmtmbG93LkNyZWF0ZVJ1blJlc3BvbnNlIgASVwoIQWJvcnRSdW4SIy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRSdW5SZXF1ZXN0GiQuZmx5dGVpZGwyLndvcmtmbG93LkFib3J0UnVuUmVzcG9uc2UiABJpCg1HZXRSdW5EZXRhaWxzEiguZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldFJ1bkRldGFpbHNSZXNwb25zZSIDkAIBEm4KD1dhdGNoUnVuRGV0YWlscxIqLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaFJ1bkRldGFpbHNSZXF1ZXN0GisuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuRGV0YWlsc1Jlc3BvbnNlIgAwARJyChBHZXRBY3Rpb25EZXRhaWxzEisuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXF1ZXN0GiwuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRldGFpbHNSZXNwb25zZSIDkAIBEncKEldhdGNoQWN0aW9uRGV0YWlscxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEFjdGlvbkRldGFpbHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uRGV0YWlsc1Jlc3BvbnNlIgAwARJsCg1HZXRBY3Rpb25EYXRhEiguZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXF1ZXN0GikuZmx5dGVpZGwyLndvcmtmbG93LkdldEFjdGlvbkRhdGFSZXNwb25zZSIGiAIBkAIBEloKCExpc3RSdW5zEiMuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RSdW5zUmVxdWVzdBokLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0UnVuc1Jlc3BvbnNlIgOQAgESXAoJV2F0Y2hSdW5zEiQuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoUnVuc1JlcXVlc3QaJS5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hSdW5zUmVzcG9uc2UiADABEmMKC0xpc3RBY3Rpb25zEiYuZmx5dGVpZGwyLndvcmtmbG93Lkxpc3RBY3Rpb25zUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5MaXN0QWN0aW9uc1Jlc3BvbnNlIgOQAgESZQoMV2F0Y2hBY3Rpb25zEicuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQWN0aW9uc1JlcXVlc3QaKC5mbHl0ZWlkbDIud29ya2Zsb3cuV2F0Y2hBY3Rpb25zUmVzcG9uc2UiADABEncKEldhdGNoQ2x1c3RlckV2ZW50cxItLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaENsdXN0ZXJFdmVudHNSZXF1ZXN0Gi4uZmx5dGVpZGwyLndvcmtmbG93LldhdGNoQ2x1c3RlckV2ZW50c1Jlc3BvbnNlIgAwARJgCgtBYm9ydEFjdGlvbhImLmZseXRlaWRsMi53b3JrZmxvdy5BYm9ydEFjdGlvblJlcXVlc3QaJy5mbHl0ZWlkbDIud29ya2Zsb3cuQWJvcnRBY3Rpb25SZXNwb25zZSIAEmIKC1dhdGNoR3JvdXBzEiYuZmx5dGVpZGwyLndvcmtmbG93LldhdGNoR3JvdXBzUmVxdWVzdBonLmZseXRlaWRsMi53b3JrZmxvdy5XYXRjaEdyb3Vwc1Jlc3BvbnNlIgAwARJ1ChFHZXRBY3Rpb25EYXRhVVJJcxIsLmZseXRlaWRsMi53b3JrZmxvdy5HZXRBY3Rpb25EYXRhVVJJc1JlcXVlc3QaLS5mbHl0ZWlkbDIud29ya2Zsb3cuR2V0QWN0aW9uRGF0YVVSSXNSZXNwb25zZSIDkAIBQswBChZjb20uZmx5dGVpZGwyLndvcmtmbG93Qg9SdW5TZXJ2aWNlUHJvdG9IAlABWjZnaXRodWIuY29tL2ZseXRlb3JnL2ZseXRlL3YyL2dlbi9nby9mbHl0ZWlkbDIvd29ya2Zsb3eiAgNGV1iqAhJGbHl0ZWlkbDIuV29ya2Zsb3fKAhJGbHl0ZWlkbDJcV29ya2Zsb3fiAh5GbHl0ZWlkbDJcV29ya2Zsb3dcR1BCTWV0YWRhdGHqAhNGbHl0ZWlkbDI6OldvcmtmbG93YgZwcm90bzM", [file_buf_validate_validate, file_flyteidl2_common_identifier, file_flyteidl2_common_list, file_flyteidl2_common_run, file_flyteidl2_task_common, file_flyteidl2_task_run, file_flyteidl2_task_task_definition, file_flyteidl2_workflow_run_definition, file_google_protobuf_timestamp]); /** * Request message for creating a run. @@ -407,6 +407,55 @@ export type GetActionDataResponse = Message<"flyteidl2.workflow.GetActionDataRes export const GetActionDataResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_flyteidl2_workflow_run_service, 13); +/** + * Request message for getting action data URIs. + * + * @generated from message flyteidl2.workflow.GetActionDataURIsRequest + */ +export type GetActionDataURIsRequest = Message<"flyteidl2.workflow.GetActionDataURIsRequest"> & { + /** + * Action to query. + * + * @generated from field: flyteidl2.common.ActionIdentifier action_id = 1; + */ + actionId?: ActionIdentifier; +}; + +/** + * Describes the message flyteidl2.workflow.GetActionDataURIsRequest. + * Use `create(GetActionDataURIsRequestSchema)` to create a new message. + */ +export const GetActionDataURIsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_workflow_run_service, 14); + +/** + * Response message for getting action data URIs. + * + * @generated from message flyteidl2.workflow.GetActionDataURIsResponse + */ +export type GetActionDataURIsResponse = Message<"flyteidl2.workflow.GetActionDataURIsResponse"> & { + /** + * URI for the action's input data. + * + * @generated from field: string inputs_uri = 1; + */ + inputsUri: string; + + /** + * URI for the action's output data. Empty if action hasn't succeeded or has no outputs. + * + * @generated from field: string outputs_uri = 2; + */ + outputsUri: string; +}; + +/** + * Describes the message flyteidl2.workflow.GetActionDataURIsResponse. + * Use `create(GetActionDataURIsResponseSchema)` to create a new message. + */ +export const GetActionDataURIsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_flyteidl2_workflow_run_service, 15); + /** * Request message for listing runs. * @@ -471,7 +520,7 @@ export type ListRunsRequest = Message<"flyteidl2.workflow.ListRunsRequest"> & { * Use `create(ListRunsRequestSchema)` to create a new message. */ export const ListRunsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 14); + messageDesc(file_flyteidl2_workflow_run_service, 16); /** * Response message for listing runs. @@ -499,7 +548,7 @@ export type ListRunsResponse = Message<"flyteidl2.workflow.ListRunsResponse"> & * Use `create(ListRunsResponseSchema)` to create a new message. */ export const ListRunsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 15); + messageDesc(file_flyteidl2_workflow_run_service, 17); /** * Request message for watching runs. @@ -550,7 +599,7 @@ export type WatchRunsRequest = Message<"flyteidl2.workflow.WatchRunsRequest"> & * Use `create(WatchRunsRequestSchema)` to create a new message. */ export const WatchRunsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 16); + messageDesc(file_flyteidl2_workflow_run_service, 18); /** * Response message for watching runs. @@ -571,7 +620,7 @@ export type WatchRunsResponse = Message<"flyteidl2.workflow.WatchRunsResponse"> * Use `create(WatchRunsResponseSchema)` to create a new message. */ export const WatchRunsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 17); + messageDesc(file_flyteidl2_workflow_run_service, 19); /** * Request message for listing actions. @@ -599,7 +648,7 @@ export type ListActionsRequest = Message<"flyteidl2.workflow.ListActionsRequest" * Use `create(ListActionsRequestSchema)` to create a new message. */ export const ListActionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 18); + messageDesc(file_flyteidl2_workflow_run_service, 20); /** * Response message for listing actions. @@ -627,7 +676,7 @@ export type ListActionsResponse = Message<"flyteidl2.workflow.ListActionsRespons * Use `create(ListActionsResponseSchema)` to create a new message. */ export const ListActionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 19); + messageDesc(file_flyteidl2_workflow_run_service, 21); /** * Request message for watching actions. @@ -658,7 +707,7 @@ export type WatchActionsRequest = Message<"flyteidl2.workflow.WatchActionsReques * Use `create(WatchActionsRequestSchema)` to create a new message. */ export const WatchActionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 20); + messageDesc(file_flyteidl2_workflow_run_service, 22); /** * Response message for watching actions, comes with enriched action metadata. @@ -679,7 +728,7 @@ export type WatchActionsResponse = Message<"flyteidl2.workflow.WatchActionsRespo * Use `create(WatchActionsResponseSchema)` to create a new message. */ export const WatchActionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 21); + messageDesc(file_flyteidl2_workflow_run_service, 23); /** * @generated from message flyteidl2.workflow.WatchClusterEventsRequest @@ -701,7 +750,7 @@ export type WatchClusterEventsRequest = Message<"flyteidl2.workflow.WatchCluster * Use `create(WatchClusterEventsRequestSchema)` to create a new message. */ export const WatchClusterEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 22); + messageDesc(file_flyteidl2_workflow_run_service, 24); /** * @generated from message flyteidl2.workflow.WatchClusterEventsResponse @@ -718,7 +767,7 @@ export type WatchClusterEventsResponse = Message<"flyteidl2.workflow.WatchCluste * Use `create(WatchClusterEventsResponseSchema)` to create a new message. */ export const WatchClusterEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 23); + messageDesc(file_flyteidl2_workflow_run_service, 25); /** * @generated from message flyteidl2.workflow.AbortActionRequest @@ -744,7 +793,7 @@ export type AbortActionRequest = Message<"flyteidl2.workflow.AbortActionRequest" * Use `create(AbortActionRequestSchema)` to create a new message. */ export const AbortActionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 24); + messageDesc(file_flyteidl2_workflow_run_service, 26); /** * @generated from message flyteidl2.workflow.AbortActionResponse @@ -757,7 +806,7 @@ export type AbortActionResponse = Message<"flyteidl2.workflow.AbortActionRespons * Use `create(AbortActionResponseSchema)` to create a new message. */ export const AbortActionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 25); + messageDesc(file_flyteidl2_workflow_run_service, 27); /** * @generated from message flyteidl2.workflow.WatchGroupsRequest @@ -812,7 +861,7 @@ export type WatchGroupsRequest = Message<"flyteidl2.workflow.WatchGroupsRequest" * Use `create(WatchGroupsRequestSchema)` to create a new message. */ export const WatchGroupsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 26); + messageDesc(file_flyteidl2_workflow_run_service, 28); /** * @generated from message flyteidl2.workflow.WatchGroupsRequest.KnownSortField @@ -835,7 +884,7 @@ export type WatchGroupsRequest_KnownSortField = Message<"flyteidl2.workflow.Watc * Use `create(WatchGroupsRequest_KnownSortFieldSchema)` to create a new message. */ export const WatchGroupsRequest_KnownSortFieldSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 26, 0); + messageDesc(file_flyteidl2_workflow_run_service, 28, 0); /** * Response message for watching task groups. @@ -865,7 +914,7 @@ export type WatchGroupsResponse = Message<"flyteidl2.workflow.WatchGroupsRespons * Use `create(WatchGroupsResponseSchema)` to create a new message. */ export const WatchGroupsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_flyteidl2_workflow_run_service, 27); + messageDesc(file_flyteidl2_workflow_run_service, 29); /** * RunService provides an interface for managing runs. @@ -934,9 +983,10 @@ export const RunService: GenService<{ output: typeof WatchActionDetailsResponseSchema; }, /** - * Get input and output for an action. + * Deprecated: Use DataProxyService.GetActionData instead. * * @generated from rpc flyteidl2.workflow.RunService.GetActionData + * @deprecated */ getActionData: { methodKind: "unary"; @@ -1015,6 +1065,16 @@ export const RunService: GenService<{ input: typeof WatchGroupsRequestSchema; output: typeof WatchGroupsResponseSchema; }, + /** + * Get the storage URIs for an action's input and output data. + * + * @generated from rpc flyteidl2.workflow.RunService.GetActionDataURIs + */ + getActionDataURIs: { + methodKind: "unary"; + input: typeof GetActionDataURIsRequestSchema; + output: typeof GetActionDataURIsResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_flyteidl2_workflow_run_service, 0); diff --git a/runs/service/run_service.go b/runs/service/run_service.go index 7ac39a4f3b..8b11287575 100644 --- a/runs/service/run_service.go +++ b/runs/service/run_service.go @@ -904,6 +904,50 @@ func (s *RunService) ListActions( return connect.NewResponse(resp), nil } +func (s *RunService) GetActionDataURIs( + ctx context.Context, + req *connect.Request[workflow.GetActionDataURIsRequest], +) (*connect.Response[workflow.GetActionDataURIsResponse], error) { + action, err := s.repo.ActionRepo().GetAction(ctx, req.Msg.GetActionId()) + if err != nil { + return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("action not found: %w", err)) + } + + if len(action.DetailedInfo) == 0 { + return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("run data not available")) + } + + info := &workflow.RunInfo{} + if err := proto.Unmarshal(action.DetailedInfo, info); err != nil { + return nil, err + } + + resp := &workflow.GetActionDataURIsResponse{ + InputsUri: info.GetInputsUri(), + } + + if action.Phase == int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED) { + if workflow.ActionType(action.ActionType) == workflow.ActionType_ACTION_TYPE_TRACE { + resp.OutputsUri = info.GetOutputsUri() + } else { + attempts, err := s.getAttempts(ctx, req.Msg.GetActionId()) + if err != nil { + return nil, err + } + if len(attempts) == 0 { + return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("outputs not available, no attempts for action")) + } + outputUri := attempts[len(attempts)-1].GetOutputs().GetOutputUri() + if outputUri == "" { + return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("outputs not available")) + } + resp.OutputsUri = outputUri + } + } + + return connect.NewResponse(resp), nil +} + // AbortAction aborts a specific action func (s *RunService) AbortAction( ctx context.Context, diff --git a/runs/service/run_service_test.go b/runs/service/run_service_test.go index 728a094a4c..17893d3b95 100644 --- a/runs/service/run_service_test.go +++ b/runs/service/run_service_test.go @@ -1488,3 +1488,207 @@ func TestCreateRun_WithOffloadedInputData(t *testing.T) { store.AssertNumberOfCalls(t, "ReadProtobuf", 0) store.AssertNumberOfCalls(t, "WriteProtobuf", 0) } + +func TestGetActionDataURIs(t *testing.T) { + actionID := &common.ActionIdentifier{ + Run: &common.RunIdentifier{ + Org: "test-org", Project: "test-project", Domain: "test-domain", Name: "rtest12345", + }, + Name: "a0", + } + + mustMarshalRunInfo := func(info *workflow.RunInfo) []byte { + b, err := proto.Marshal(info) + require.NoError(t, err) + return b + } + + mustMarshalEvent := func(event *workflow.ActionEvent) []byte { + b, err := proto.Marshal(event) + require.NoError(t, err) + return b + } + + t.Run("action not found returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(nil, errors.New("missing")) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("missing detailed_info returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_RUNNING), + DetailedInfo: nil, + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("non-terminal phase returns inputs only", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_RUNNING), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TASK), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{ + InputsUri: "s3://bucket/inputs", + OutputsUri: "s3://bucket/outputs", + }), + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + require.NoError(t, err) + assert.Equal(t, "s3://bucket/inputs", resp.Msg.GetInputsUri()) + assert.Empty(t, resp.Msg.GetOutputsUri()) + }) + + t.Run("trace action returns outputs uri from RunInfo", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TRACE), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{ + InputsUri: "s3://bucket/inputs", + OutputsUri: "s3://bucket/trace-outputs", + }), + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + require.NoError(t, err) + assert.Equal(t, "s3://bucket/inputs", resp.Msg.GetInputsUri()) + assert.Equal(t, "s3://bucket/trace-outputs", resp.Msg.GetOutputsUri()) + }) + + t.Run("succeeded task returns outputs from latest attempt", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TASK), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{ + InputsUri: "s3://bucket/inputs", + }), + }, nil) + + eventBytes := mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, + Attempt: 0, + Phase: common.ActionPhase_ACTION_PHASE_SUCCEEDED, + Outputs: &task.OutputReferences{ + OutputUri: "s3://bucket/outputs/0/outputs.pb", + }, + }) + actionRepo.On("ListEvents", mock.Anything, matchActionID(actionID), 500).Return([]*models.ActionEvent{ + {Attempt: 0, Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), Info: eventBytes}, + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + require.NoError(t, err) + assert.Equal(t, "s3://bucket/inputs", resp.Msg.GetInputsUri()) + assert.Equal(t, "s3://bucket/outputs/0/outputs.pb", resp.Msg.GetOutputsUri()) + }) + + t.Run("succeeded task with no attempts returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TASK), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{ + InputsUri: "s3://bucket/inputs", + }), + }, nil) + actionRepo.On("ListEvents", mock.Anything, matchActionID(actionID), 500).Return([]*models.ActionEvent{}, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("succeeded task with empty output_uri returns NotFound", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TASK), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{ + InputsUri: "s3://bucket/inputs", + }), + }, nil) + + eventBytes := mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, + Attempt: 0, + Phase: common.ActionPhase_ACTION_PHASE_SUCCEEDED, + }) + actionRepo.On("ListEvents", mock.Anything, matchActionID(actionID), 500).Return([]*models.ActionEvent{ + {Attempt: 0, Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), Info: eventBytes}, + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + assert.Nil(t, resp) + assert.Error(t, err) + assert.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }) + + t.Run("succeeded task uses last attempt outputs when multiple attempts", func(t *testing.T) { + actionRepo, _, svc := newTestService(t) + actionRepo.On("GetAction", mock.Anything, matchActionID(actionID)).Return(&models.Action{ + Phase: int32(common.ActionPhase_ACTION_PHASE_SUCCEEDED), + ActionType: int32(workflow.ActionType_ACTION_TYPE_TASK), + DetailedInfo: mustMarshalRunInfo(&workflow.RunInfo{InputsUri: "s3://bucket/inputs"}), + }, nil) + + now := time.Now() + event0 := mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, Attempt: 0, + Phase: common.ActionPhase_ACTION_PHASE_FAILED, + ReportedTime: timestamppb.New(now), + Outputs: &task.OutputReferences{OutputUri: "s3://bucket/outputs/0/outputs.pb"}, + }) + event1 := mustMarshalEvent(&workflow.ActionEvent{ + Id: actionID, Attempt: 1, + Phase: common.ActionPhase_ACTION_PHASE_SUCCEEDED, + ReportedTime: timestamppb.New(now.Add(time.Second)), + Outputs: &task.OutputReferences{OutputUri: "s3://bucket/outputs/1/outputs.pb"}, + }) + actionRepo.On("ListEvents", mock.Anything, matchActionID(actionID), 500).Return([]*models.ActionEvent{ + {Attempt: 0, Info: event0}, + {Attempt: 1, Info: event1}, + }, nil) + + resp, err := svc.GetActionDataURIs(context.Background(), connect.NewRequest(&workflow.GetActionDataURIsRequest{ + ActionId: actionID, + })) + + require.NoError(t, err) + assert.Equal(t, "s3://bucket/outputs/1/outputs.pb", resp.Msg.GetOutputsUri()) + }) +} +